程式5 判斷平衡二叉樹

2021-07-08 21:00:46 字數 750 閱讀 8266

所謂平衡二叉樹就是, 二叉樹的任意結點的左右子樹的高度差不超過1. 如下圖就是一棵平衡二叉樹.

根據定義,可以很容易的想到, 可以求出每個結點的左右子樹的高度, 然後比較高度差. 最先需要解決的就是求解二叉樹的高度.

int treedepth(tree *t) 

boolean isbanlancedtree(tree *t)

intleft = treedepth(t->lchild);

intright = treedepth(t->rchild);

int diff = left - right;

if (abs(diff) > 1) else

}

上面那種思路有乙個缺陷: 由於每次都要計算子樹的高度, 造成底層的結點被遍歷多次. 可以採用從下往上的方式來求高度, 判斷是否時平衡二叉樹.

boolean isbanlancedtree(tree *t, int *depth) 

intleft = 0;

intright = 0;

if (isbanlancedtree(t->lchild, &left) && isbanlancedtree(t->rchild, &right))

}return false;

}

判斷平衡二叉樹

演算法 樹 平衡二叉樹 平衡二叉樹的概念 左右節點的樹高之差小於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 這種做法有很明顯...