平衡二叉树

来源:互联网 发布:淘宝 主板 编辑:程序博客网 时间:2024/05/16 06:23

题目描述

输入一棵树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

解题思路

可以结合二叉树的深度的题目来看,简单的做法可以用递归实现,但是时间复杂度会比较高,因为会重复计算。

java代码实现

class TreeNode{    int val = 0;    TreeNode left = null;    TreeNode right = null;    TreeNode(int val) { this.val = val;}}public class Solution {    public boolean IsBalanced_Solution(TreeNode root) {        if(root == null) return true;        int nLeft = TreeDepth(root.left);        int nRight = TreeDepth(root.right);        int diff = nLeft - nRight;        if(diff > 1 || diff < -1) return false;        return true;    }    //计算树的深度    public int TreeDepth(TreeNode root)    {       if(root == null) return 0;        int left = TreeDepth(root.left);        int right = TreeDepth(root.right);        return (left > right)? left + 1 : right + 1;    }}
0 0
原创粉丝点击