判斷平衡二叉樹

2021-09-29 14:52:43 字數 873 閱讀 7404

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

最直接的做法,遍歷每個節點,借助乙個獲取樹深度的遞迴函式,

根據該節點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷

pubic class

solution

private

intmaxdepth

(treenode root)

}這種做法有很明顯的問題,在判斷上層結點的時候,會多次重複遍歷下層結點,

增加了不必要的開銷。如果改為從下往上遍歷,如果子樹是平衡二叉樹,則返回子樹的高度;

如果發現子樹不是平衡二叉樹,則直接停止遍歷,這樣至多只對每個結點訪問一次

8b3b95850edb4115918ecebdf1b4d222?f=discussion

public

class

solution

private

intgetdepth

(treenode root)

}public

boolean

isbalanced_solution

(treenode root)

private

intgetheight

(treenode root)

22222222222222222222222222222

public

boolean

isbalanced_solution

(treenode root)

private

intgetdepth

(treenode node)

depth++;}

return depth;

}

判斷平衡二叉樹

演算法 樹 平衡二叉樹 平衡二叉樹的概念 左右節點的樹高之差小於1。1.計算節點的高。通過遞迴,求出左右子樹的高度,當前節點的高度,最大的那乙個 1。int getheight treenode root 2.通過遞迴的方法計算左子樹和右子樹的樹高之差是否有小於1的,有就直接返回false.publ...

判斷平衡二叉樹

package com.jsp.tree 判斷是否是平衡二叉樹 author jiangshipan 任何乙個節點 左子樹和右子數高度差小於1 以每乙個節點為頭的樹都是平衡的,則這個樹平衡 可能 1.左樹不平 2.右樹不平 3.左或右高 整棵樹 public class isbalancedtree...

判斷平衡二叉樹

平衡二叉樹的定義 對於任一結點,其左右子樹高度之差不大於1。因此解決該問題自然而然就想到改寫求二叉樹的高度的演算法。如下為求二叉樹高度的演算法 public int getheight treenode root int leftheight getblanceheight root.left in...