平衡二叉樹 (空樹或者左右兩個孩子高度差不超過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...