1. 程式人生 > 其它 >資料結構之樹--110. 平衡二叉樹

資料結構之樹--110. 平衡二叉樹

技術標籤:資料結構與演算法二叉樹演算法資料結構leetcodejavascript

給定一個二叉樹,判斷它是否是高度平衡的二叉樹。
本題中,一棵高度平衡二叉樹定義為:
一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1 。
示例 1:
在這裡插入圖片描述

輸入:root = [3,9,20,null,null,15,7]
輸出:true

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/** * @param {TreeNode} root * @return {boolean} */ var isBalanced = function(root) { let flag = true; // 先把所有二叉樹先當做平衡二叉樹 let maxHeight = (r) =>{ if(!r) return 0;//當節點不存在時,高度為0 let left = maxHeight(r.left); let right = maxHeight(r.right);//深度遍歷,求出左右子樹高度 if(Math.abs
(left-right)>1){ flag = false;//高度差超過1時,非平衡二叉樹,直接false } return Math.max(left,right)+1 // 這裡加1是因為要把父節點高度算進去 }; maxHeight(root); return flag; };