CC150 4.4 Check Balanced; Leetcode 110. Balanced Binary Tree

来源:互联网 发布:linux权限 编辑:程序博客网 时间:2024/06/05 21:16

Leetcode link: https://leetcode.com/problems/balanced-binary-tree/


Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined asa binary tree in which the depth of the two subtrees of every node never differ by more than 1.

实现一个方法,检查binary tree 是否平衡; 平衡的定义: 两个子树的高度差不能大于1

思路
1 2个 递归
2 边界条件: boundary condition
     2.1 bool IsBalance(TreeNode root), if(root==null)=>return true; 平衡
     2.2 int GetHeight(TreeNode root), if(root==null)    => return -1;   高度为-1

C#代码:

AC版本

 #region Balanced        /// <summary>        /// 获取当前root节点的深度        /// </summary>        /// <param name="root"></param>        /// <returns></returns>        private int GetHeight(TreeNode root)        {            if (root == null)                return -1;            //左节点height/右节点height较大者,加一;得到最高节点;            return Math.Max(GetHeight(root.left),GetHeight(root.right))+1;        }        /// <summary>        /// 判断当前根节点是否平衡        /// </summary>        /// <param name="root"></param>        /// <returns></returns>        public bool IsBalance(TreeNode root)        {            if (root == null)                return true;            int heightDif = GetHeight(root.left) - GetHeight(root.right);            if ( Math.Abs(heightDif) > 1 )                return false;            else//递归判断  左节点平衡&&右节点平衡            {                return IsBalance(root.left) && IsBalance(root.right);            }        }        #endregion 


0 0
原创粉丝点击