二叉樹 判斷一棵樹是否是平衡二叉樹

2022-08-10 08:21:09 字數 1216 閱讀 9084

平衡二叉樹 (空樹或者左右兩個孩子高度差不超過1)

在涉及到二叉樹的題目時,遞迴函式非常好用

列出可能性-》整理出返回值的型別-》整個遞迴過程按照同樣的結構得到子樹的資訊,整合子樹的資訊,加工出應該返回的資訊,向上返回

1.左子樹是否平衡

2.右子樹是否平衡

3.左子樹的高度

4.右子樹的高度

根據可能性,使用遞迴函式

可能性-》返回值的型別  

//列出可能性  左右子樹是否分別平衡,若平衡後,左右子樹的高度

public static class returndata

}

整個遞迴過程按照同樣的結構得到子樹的資訊(左子樹和右子樹分別是否平衡,以及它們的高度

),整合子樹的資訊(左右子樹的高度差是否符合要求),加工出返回的資訊(應該返回左右子樹中,高度較大的那乙個high+1

public static returndata process(tree tree)

returndata rightdata = process(tree.right);

if(!rightdata.isb)

if(math.abs(leftdata.high - rightdata.high) > 1)

return new returndata(true, math.max(leftdata.high, rightdata.high) + 1);

}

整體的**

public class isbanlancedtree 

}public static returndata process(tree tree)

returndata rightdata = process(tree.right);

if(!rightdata.isb)

if(math.abs(leftdata.high - rightdata.high) > 1)

return new returndata(true, math.max(leftdata.high, rightdata.high) + 1);

}public static boolean isbanlancedtree(tree tree)

}

判斷一棵樹是否是平衡二叉樹

題目 程式設計題 平衡二叉樹 時間限制 1000 ms,記憶體限制 256000 kb,長度限制 8000 b 判斷乙個二叉樹是不是平衡 說明 一棵二叉樹任意乙個節點的左右子樹的深度差不大於1,即為平衡二叉樹。給定乙個有n個節點的二叉樹,每個節點有乙個序號表示,樹有m條分支。每個分支用三個數字a b...

如何判斷一棵樹是否是平衡二叉樹

判斷的思路很簡單,若一棵樹是平衡二叉樹,它的左右子樹都是平衡二叉樹,並且左右子樹的高度差小於等於1。注意,實現的時候,判斷左右子樹的平衡性時,可以順便計算子樹高度,不用再另外計算一次,下面是其遞迴實現 include using namespace std struct treenode class...

判斷一棵二叉樹是否是平衡二叉樹

思路 遞迴方式判斷,返回的資訊應該有兩個 1 這棵樹是否是平衡的 2 這棵樹的高度為多少 public class isbalancedtree public static class returndata public static returndata process node head ret...