您的位置:首页 > Web前端

剑指offer_二叉树深度 及 是否为平衡二叉树

2017-06-05 14:14 381 查看

题目描述

判断二叉树的深度及 是否为平衡二叉树

平衡二叉树:任意结点的左右子树的深度相差不超过1,那么就是平衡二叉树。

解题思路

-使用二叉树深度的公式计算每个结点的深度值

-利用后续遍历,遍历二叉树每一个结点。在遍历的同时记录他的深度,就可以在遍历的同时判断每个结点是不是平衡的。

Java实现

public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null)
return true;
//后序遍历<左-右-中>,先遍历左右节点的深度值,再比较当前中间节点是否平衡。
//这里使用递归方式,后期改写为循环形式,节省内存空间
int leftDepth = getDepth(root.left);
int rightDepth = getDepth(root.right);

if (Math.abs(leftDepth - rightDepth) > 1)
return false;
return (IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right));
}

private int getDepth(TreeNode root){
if (root == null)
return 0;
int leftDepth = getDepth(root.left);
int rightDepth = getDepth(root.right);
return (leftDepth > rightDepth) ? (leftDepth+1) : (rightDepth+1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: