题目:给定一颗树,判断其是否为平衡二叉树(平衡二叉树的左右子树高度差不大于1)
算法:递归遍历二叉树的左右子树高度,记录最大高度差
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public int maxDepthDiff = -1; public boolean isBalanced(TreeNode root) { TreeDepth(root); return (maxDepthDiff <= 1); } /** * find the difference for left child depth and right child depth * @param root * @return */ public int TreeDepth(TreeNode root) { if (null == root) { return 0; } int left = TreeDepth(root.left); int right = TreeDepth(root.right); int depthDiff = Math.abs(left-right); if (maxDepthDiff < depthDiff) { maxDepthDiff = depthDiff; } return (left > right ? left+1 : right+1); } }
[LeetCode]Balanced Binary Tree,布布扣,bubuko.com
[LeetCode]Balanced Binary Tree
原文地址:http://blog.csdn.net/yeweiouyang/article/details/36650573