輸入一顆二叉樹,判斷該二叉樹是否是平衡二叉樹
class Solution {
public:
bool IsBanlanced(TreeNode* pRoot,int* pDepth){
if(pRoot==NULL){
*pDepth=0;
return true;
}
int nleft,nright;
if(IsBanlanced(pRoot->left,&nleft) &&
IsBanlanced(pRoot->right,&nright)){
int diff=nleft-nright;
if(diff<=1 && diff>=-1){
*pDepth=1+(nleft>nright?nleft:nright);
return true;
}
}
return false;
}
bool IsBalanced_Solution(TreeNode* pRoot) {
int depth=0;
return IsBanlanced(pRoot,&depth);
}
};
相關推薦
輸入一顆二叉樹,判斷該二叉樹是否是平衡二叉樹
class Solution { public: bool IsBanlanced(TreeNode* pRoot,int* pDepth){ if(pRoot==NULL){ *pDepth=0;
劍指offer:輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 //後續遍歷二叉樹,遍歷過程中求子樹高度,判斷是否平衡 class Solution { public: bool IsBalanced(TreeNode *root, int & dep){
輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。
public class Solution { boolean Judge(int [] a,int l,int r) { if(l>=r) return true; int i=r; while(i>l&
【劍指offer24】輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。
bool VerifySquenceOfBST(vector<int> sequence) { return _VerifySequenceOfBST(sequence); } bool _VerifySequenceOfBST(vector<int>
任意輸入一串字符串,求該字符串中字符的出現次數並打印出來,如輸入“bcaba”輸出:b 2 c 1 a 2
str ner ray view 方法 打印 contain 返回 play 前言:其實我還是有點不懂,有點郁悶了,算了直接把代碼放上去把。 方法一: Scanner input=new Scanner(System.in); System.out.pr
劍指offer 39---求二叉樹的深度 && 輸入一顆二叉樹的根節點,判斷該樹是不是平衡二叉樹
求二叉樹的深度 思路: 分別遞迴左右子樹,深度=左右子樹中大的一個+1 /* struct TreeNode { int val; struct TreeNode *left; struct
刷題:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。
原題:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 思路分析:首先思考節點值的和為輸入的整數,每條路徑都一定是從根節點到葉子節點,在資料結構中從根節點到葉子節點的遍歷稱之為深度優先遍歷DFS。因此整
輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑(劍指offer)
解題思路:遍歷二叉樹,採用遞迴的方法,將滿足條件的路徑壓入一維陣列當中,注意當找到滿足條件的路徑時,先將陣列壓入二維陣列,然後將一維陣列中的每個元數彈出,以存放新的路徑。 /* struct TreeNode {int val;struct TreeNode
輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑
ger roo pop void set null push ava 所有 題目: 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解答: 1 import java.util.*;
輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
public class Solution { private ArrayList<ArrayList<Integer
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列(劍指offer)
題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。 分析: 在二叉搜尋樹中,每個結點都有兩個分別指向其左、右子樹的指標,左子樹結點的值總是小於父結點的值,右子樹結點的值總是大於父結點的值。在雙向連結串列中,每個結點
Java程式碼 給出一個二叉樹和一個數,判斷該二叉樹是否存在一個從根節點到葉節點的和與給出的數相同
從菜鳥到大牛一定要戒驕戒躁,沉下心來慢慢打磨自己! 這個題目的演算法思想分為三種情況: case1樹為空時,返回false case2 樹只有一個根節點 case3 正常情況下的樹 Java程式碼如下: /** * Definition for a binary tree
java 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。 比如將二元查詢樹
《牛客網劍指offer38題》輸入一棵二叉樹,求該樹的深度
題目:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 結果:牛客網編譯通過 思路及程式碼: //中心思想就是遞迴遍歷一遍二叉
牛客原題 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {
leetcode_101. Symmetric Tree 對稱樹, 判斷一棵二叉樹是否對稱,遞迴方法
題目: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree [1,2,
二叉樹(先、中、後、層次遍歷,判斷同構和是否為完全二叉樹)
二叉樹基本操作 二叉樹的結構定義 二叉樹的建立(遞迴) 訪問節點 先序遍歷 中序遍歷 後序遍歷 層次遍歷 判斷是否同構 判斷一顆二叉樹是否為完全二叉樹 二叉樹的結構定義
已知一個按先序序列輸入的字元序列,如abc,,de,g,,f,,,(其中逗號表示空節點)。請建立二叉樹並按中序和後序方式遍歷二叉樹,最後求出葉子節點個數和二叉樹深度。
這是一個標準的模板題 記下了就完事了! Input 輸入一個長度小於50個字元的字串。 Output 輸出共有4行: 第1行輸出中序遍歷序列; 第2行輸出後序遍歷序列; 第3行輸出葉子節點個數; 第4行輸出二叉樹深度。 Sample Input abc,,
題目:輸入一顆二元樹,從上往下按層列印樹的每個結點,同一層中按照從左往右的順序列印。
題目: 輸入一顆二元樹,從上往下按層列印樹的每個結點,同一層中按照從左往右的順序列印。 例如輸入 8 / \ 6 10 / \ / \ 5 7 9 11輸出8 6 10 5 7 9 11。 解題思路:利用佇列先進先出(FIFO)的性質,取出隊首元素,輸出隊
給定一個二叉樹,獲取該二叉樹的寬度深度
prototype %d param unsigned right idt height push signed 題目: Description 給定一個二叉樹,獲取該二叉樹的寬度深度。 Prototype int GetBiNo