树-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;
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值