树-Invert Binary Tree(翻转二叉树)

问题描述:

Invert a binary tree.

     4
   /   \
  2     7
 / \   / \
1   3 6   9
to
     4
   /   \
  7     2
 / \   / \
9   6 3   1
特别是这一句: Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

思考:

复习下数据结构的基础知识,满二叉树:节点个数=2^n -  1(n为树的深度),完全二叉树:节点个数最多=2^n  -  1(n为树的深度),节点个数最少=2^(n  -  1)(n为树的深度)。所以完全二叉树平均深度为logN(n为树的深度),诸如删除,遍历的操作的平均时间就是O(logN)。
这道题的意思是,把每个节点的子树都互换位置,右变左,左变右。用递归最好不过。

代码(java):

public class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null ){return null;}
		TreeNode temp = root.left;
		root.left = root.right;
		root.right = temp;

		invertTree(root.left);
		invertTree(root.right);

		return root;
    }
}




你可能感兴趣的:(数据结构与算法的积累)