swift 算法 简单23.平衡二叉树

知识共享许可协议 Creative Commons

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7
返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

       1
      / \
     2   2
    / \
   3   3
  / \
 4   4
返回 false 。

解法:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public var val: Int
 *     public var left: TreeNode?
 *     public var right: TreeNode?
 *     public init(_ val: Int) {
 *         self.val = val
 *         self.left = nil
 *         self.right = nil
 *     }
 * }
 */
class Solution {
    func isBalanced(_ root: TreeNode?) -> Bool {
          if(root == nil) {
            return true;
        }
        let left = height(root!.left);
        let right = height(root!.right);
        if(abs(left-right)>1) {
            return false;
        }else{
            if(isBalanced(root!.left) && isBalanced(root!.right)) {
                return true;
            }
            else {
                return false;
            }
        }
    }
    func height(_ root: TreeNode?) -> Int
    {
        guard root != nil else {
            return 0
        }
        
        let Left = height(root?.left);
        let Right = height(root?.right);
        return Left > Right ? (Left + 1) : (Right + 1);
    }
}

猜你喜欢

转载自blog.csdn.net/huanglinxiao/article/details/91946843