How to Mirror a Binary Tree?
- 时间:2020-10-12 15:56:23
 - 分类:网络文摘
 - 阅读:193 次
 
Given a binary tree like this:
 
    	    8
    	   /  \
    	  6   10
    	 / \  / \
    	5  7 9 11
Your task is to mirror it which becomes this:
    	    8
    	   /  \
    	  10   6
    	 / \  / \
    	11 9 7  5
The most elegant algorithm to mirror a binary tree is using recursion. We can recursively mirror left and right trees respectively and then swap the left and right trees.
1 2 3 4 5 6 7 8 9 10 11 12 13  | public class Solution { public void Mirror(TreeNode root) { if (root == null) return; // make left tree also a mirror recursively Mirror(root.left); // make right tree also a mirror tree. Mirror(root.right); // swap left and right trees TreeNode t = root.left; root.left = root.right; root.right = t; } }  | 
public class Solution {
    public void Mirror(TreeNode root) {
        if (root == null) return;
        // make left tree also a mirror recursively
        Mirror(root.left);
        // make right tree also a mirror tree.
        Mirror(root.right);
        // swap left and right trees
        TreeNode t = root.left;
        root.left = root.right;
        root.right = t;        
    }
}The time complexity is O(N) where each node will be visited constant time, and the space complexity through calling stacks via recursion is O(N)=O(h) which is the height of the tree.
It is said that this is one of the Google’s interview question, a simple one though.
–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:数的进位制 最大公约数和最小公倍数 富兰克林的遗嘱 听出言外之意——一道三年级的数学题 小学日记大全_初中日记大全 水的故事|小学作文 落花生|小学作文 无名山半日游|小学作文 我们究竟为何而读书|小学作文 神秘的海底探索机器人|小学作文
- 评论列表
 - 
				
 
- 添加评论