精华内容
下载资源
问答
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),...

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

    题目描述

    输入一棵二叉树,判断该二叉树是否是平衡二叉树。
    在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
    平衡二叉树(Balanced Binary Tree),具有以下性质:
    它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
    示例1
    输入 {1,2,3,4,5,6,7}
    返回值 true

    /*
     * @Author   helen
     * @Date     2021/4/16 11:09
     * @Descriptions
     * 题目描述
        输入一棵二叉树,判断该二叉树是否是平衡二叉树。
        在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
        平衡二叉树(Balanced Binary Tree),具有以下性质:
        * 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
        示例1
            输入     {1,2,3,4,5,6,7}
            返回值    true
     */
    
    public class 平衡二叉树 {
        public boolean IsBalanced_Solution(BTreeNode<Integer> root) {
            if(root == null)
                return true;
            int left = depth(root.left);
            int right = depth(root.right);
            if(left-right > 1 || left-right < -1)
                return false;
            //判断子树是否也是平衡二叉树
            return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
        }
        //判断子树的深度
        public int depth(BTreeNode<Integer> root){
            if(root == null)
                return 0;
            int left = depth(root.left);
            int right = depth(root.right);
            return left>right? left+1 : right+1;
        }
    }
    
    
    展开全文
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树
    public class Solution{
    
    boolean flag = true;
    int maxDepth = 0;
    public boolean IsBalanced_Solution(TreeNode root) {
    int left = 0;
    int right = 0;
    if (root == null) {
    // 空树也是一颗平衡二叉树
    return true;
    }
    IsBalanced_Solution(root.left);
    // 当前节点左子树深度
    left = maxDepth_left(root.left, 0);
    maxDepth = 0;
    // 当前节点右子树深度
    right = maxDepth_left(root.right, 0);
    if ((left - right) > 1 || (right - left) > 1) {
    flag = false;
    return flag;
    }
    IsBalanced_Solution(root.right);
    return flag;


    }


    // 获取每个节点的最大深度
    public int maxDepth_left(TreeNode root, int depth) {
    if (root == null) {
    return 0;
    }
    depth++;
    maxDepth_left(root.left, depth);
    if (maxDepth  < depth) {
    maxDepth= depth;
    }
    maxDepth_left(root.right, depth);
    if (maxDepth < depth) {
    maxDepth = depth;
    }
    depth--;
    return maxDepth;
    }



    }
    展开全文
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的...

    题目描述

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

    在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树

    平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

    public class Solution {
        public boolean IsBalanced_Solution(TreeNode root) {
            
            if(root == null){
                return true;
            }
            
            if(Math.abs(getHeight(root.left)-getHeight(root.right))>1){
                return false;
            }
            
            return true;
        }
        
        public int getHeight(TreeNode root){
            
            if(root == null){
                return 0;
            }
            
            return Math.max(getHeight(root.left),getHeight(root.right)) + 1;
        }
    }

     

    展开全文
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树 思路 平衡二叉树:某节点的左右子树深度差绝对值不超过1。利用递归求左右子树的深度,以判断这颗树是不是平衡的。 代码 class Solution { public: bool ...

    题目

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

    思路

    平衡二叉树:某节点的左右子树深度差绝对值不超过1。利用递归求左右子树的深度,以判断这颗树是不是平衡的。

    代码

    class Solution {
    public:
        bool IsBalanced_Solution(TreeNode* pRoot) {
            if(pRoot==NULL)
                return true;
            int left=deep(pRoot->left);
            int right=deep(pRoot->right);
            int diff=left-right;
            if(diff>1||diff<-1)
                return false;
            return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right);
        }
    //求节点高度
    private:
        int deep(TreeNode* pRoot)
        {
            if(pRoot==NULL)
                return 0;
            int left=deep(pRoot->left);
            int right=deep(pRoot->right);
            
            return (left>right)?left+1:right+1;
        }
    };
    

     

    展开全文
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路: 就是利用求二叉树深度的思想,中间加个判断条件,如果深度之差超过1,那么就是非平衡二叉树,遍历就可以结束了 求深度思想的解释与代码参考上篇 ...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树 目录 题目描述 代码实现 题目描述 平衡二叉树判断。输入一棵二叉树,判断该二叉树是否是平衡二叉树。 代码实现 题目描述 平衡二叉树判断。...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 import java.lang.*; //个很正常的想法是:首先判断左子树是不是平衡二叉树,然后判断右...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树 分析 平衡二叉树二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 public boolean IsBalanced_Solution(TreeNode root) { //判断是否为空树 if (root...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树(Java版) package Day45; /** * @Author Zhongger * @Description 输入一棵二叉树,判断该二叉树是否是平衡二叉树 * @Date 2020.3.18 */ public class ...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 public class Solution { public boolean isBalanced = true; public boolean IsBalanced_Solution(TreeNode root) { getDepth(root); return isBalanc
  • 输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1 ,那么它就是一棵平衡二叉树。 例如,下图中的二叉树就是一棵平衡二叉树。 二、解题思路 解法:需要重蟹...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 //后续遍历二叉树,遍历过程中求子树高度,判断是否平衡 class Solution { public: bool IsBalanced(TreeNode *root, int &amp; dep){ if(root == NULL){ ...
  • 题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如,下图中的二叉树就是一棵平衡二叉树。   解题思路: (1)需要...
  • * 输入一棵二叉树个整数, 打印出二叉树中结点值的和为输入整数的所有路径。 * 从树的根结点开始往下一直到叶销点所经过的结点形成条路径。 * * @param root 树的根结点 * @param expectedSum 要求的路径...
  • 输入一棵二叉树的根节点,求该树的深度 利用递归求二叉树的深度,原理是给出一棵二叉数Tree,要求它的深度height,就要求它的左子树leftTree与右子树rightTree的深度,取深度较大的一方,那么这棵二叉树的深度为...
  • 输入一棵二叉树,求该树的深度

    千次阅读 2018-09-13 20:58:41
    输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的条路径,最长路径的长度为树的深度。 方法:非递归 (层次遍历) /** public class TreeNode { int val = 0; ...
  • 输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,974
精华内容 50,789
关键字:

输入一棵二叉树