判斷平衡二叉樹

2021-10-01 16:10:39 字數 894 閱讀 1552

平衡二叉樹的定義:對於任一結點,其左右子樹高度之差不大於1。

因此解決該問題自然而然就想到改寫求二叉樹的高度的演算法。

如下為求二叉樹高度的演算法

public int getheight(treenode root) 

int leftheight = getblanceheight(root.left);

int rightheight = getblanceheight(root.right);

return math.max(leftheight, rightheight) + 1;

}

現在我們需要新的返回值返回是否為平衡二叉樹,但是計算高度函式已經佔據了返回值。但是我們發現高度總是為正的,因此我們可以使用乙個負數標記為非平衡二叉樹。

具體實現**如下:

public boolean isbalanced(treenode root) 

/*** 獲取平衡二叉樹的高度 若非平衡二叉樹返回-1

* @return height or -1

*/public int getblanceheight(treenode root)

int leftheight = getblanceheight(root.left);

if(leftheight == -1)

int rightheight = getblanceheight(root.right);

if(rightheight == -1)

return math.abs(leftheight - rightheight) <= 1 ?

math.max(leftheight, rightheight) + 1 : -1;

}

判斷平衡二叉樹

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

判斷平衡二叉樹

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

判斷平衡二叉樹

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。最直接的做法,遍歷每個節點,借助乙個獲取樹深度的遞迴函式,根據該節點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷 pubic class solution private intmaxdepth treenode root 這種做法有很明顯...