剑指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); } }
相关文章推荐
- 剑指offer 39. 二叉树的深度和判断是否为平衡二叉树
- 剑指offer 面试题39 求二叉树深度|判断是否为平衡二叉树
- 【面试题】剑指Offer-39-求二叉树的深度和判断一颗树是否为平衡二叉树
- 剑指offer 39-二叉树的深度 判断二叉树是否为平衡二叉树
- 剑指Offer 39题 二叉树的深度 && 判断平衡二叉树 Java版
- 剑指offer-判断该二叉树是否是平衡二叉树
- 剑指offer面试题39:二叉树深度以及判断平衡二叉树
- 剑指offer—关于判断二叉树是否为平衡二叉树
- 剑指Offer学习总结-判断二叉树是否是平衡二叉树
- 剑指offer 6.3 知识迁移能力3- 判断二叉树是否是平衡二叉树
- 剑指Offer面试题39二叉树的深度(以及判断平衡二叉树),面试题40数组中只出现一次的数字
- 剑指offer解题报告(Java版)——二叉树的深度 判断二叉树是否平衡 38
- [剑指offer]二叉树深度vs判断平衡二叉树
- 剑指Offer_面试题39_二叉树的深度 & 判断平衡二叉树
- 剑指offer 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 剑指Offer: 二叉树的深度、平衡二叉树
- 剑指Offer--039-平衡二叉树(判断一棵二叉树是否是平衡二叉树)[扩展附加题]
- 【剑指offer】判断二叉树是否为平衡二叉树
- 剑指offer 39.判断二叉树是否为平衡二叉树
- 剑指Offer----面试题39(1):二叉树的深度