问题描述:
Invert a binary tree.
4 / \ 2 7 / \ / \ 1 3 6 9to
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;
}
}