剑指offer中树的总结(基于树的深度)

剑指offer中树的总结(基于树的深度)

    虽说把该题归到基于树深度的扩展题目,但是树深度可以看做基于最为基本的前序遍历,中序遍历,后序遍历的递归写法。

 求树的深度的程序如下:

   

public int TreeDepth(TreeNode root) {
		if (root==null) {
			return 0;
		}
		int m =TreeDepth(root.left);
		int n = TreeDepth(root.right);
		if (m>n) {
			return m+1;
		}else {
			return n+1;
		}
	}
代码非常的简短,完成的功能也是非常的简单。

扩展如下:

 输入一棵二叉树,判断该二叉树是否是平衡二叉树。

在了解平衡二叉树的定义之后,只要分别求出左子树、右子树的高度即可。代码如下:

 public boolean IsBalanced_Solution(TreeNode root) {
		if (root==null) return true;
		else {
				
				int leftDepth = getRootDepth(root.left);
				int rightDepth = getRootDepth(root.right);
				if (Math.abs(leftDepth-rightDepth)<=1) {
					return true;
			}
		}
    	
    	return false;
    }
    
    int getRootDepth(TreeNode root){
    	if (root==null) {
			return 0;
		}
    	int leftDepth = getRootDepth(root.left);
    	int rightDepth = getRootDepth(root.right);
        
    	if (leftDepth> rightDepth) {
			return leftDepth+1; 
		}else {
			return rightDepth+1;
		}
    	
    }

有人曾说,几乎所有的二叉树的题目算法实现,都是在最为原始的前序、中序、后序遍历的递归写法上进行改造的。后面的示例总结过程中,我也会往这方面去靠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值