劍指offer第三十八題:二叉樹的深度
題目描述
輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
思路:用遞迴,左右兩個子樹一直遞迴比較,取最大的值,就是深度。
程式碼:
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: int TreeDepth(TreeNode* pRoot) { while(pRoot!=NULL) { return max(TreeDepth(pRoot->left) + 1,TreeDepth(pRoot->right) + 1); } return 0;//該函式一定要有返回 } };
相關推薦
劍指offer第三十八題:二叉樹的深度
題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 思路:用遞迴,左右兩個子樹一直遞迴比較,取最大的值,就是深度。 程式碼: /* struct TreeNode { int val;
劍指offer第三十一題:整數中1出現的次數(從1到n整數中1出現的次數)
題目描述 求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區
劍指offer第三十五題:陣列中的逆序對
題目描述 在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 輸入描述: 題目保證輸入的陣列中沒有的相同的數字
劍指offer第三十六題:兩個連結串列的第一個公共結點
題目描述 輸入兩個連結串列,找出它們的第一個公共結點。 思路:由於引數都是單鏈表,那麼意味著遇到第一個公共結點後,後邊的結點都是公共結點,用雜湊set,將其中一個連結串列所有的結點先放入set中,然後遍歷第二個連結串列,遍歷的同時查詢set,若查到,則當前結點即為第一個公
牛客網《劍指offer》之Python2.7實現:二叉樹的映象
題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。 輸入描述: 二叉樹的映象定義:源二叉樹 思路 遞迴遍歷二叉樹,交換左右子樹即可,需要注意葉節點的處理 程式碼 # -*- coding:utf-8 -*- # class TreeNode: #
《劍指offer》第三十六題(二叉搜索樹與雙向鏈表)
我們 troy 面試 next 指向 destroy 新的 left ext // 面試題36:二叉搜索樹與雙向鏈表 // 題目:輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求 // 不能創建任何新的結點,只能調整樹中結點指針的指向。 #in
59、劍指offer--按之字形順序打印二叉樹
print 題目 一個棧 wrap offer 二叉 原因 treenode 只有一個 題目描述 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 解題思路:通過分析,使用棧
劍指offer---從上往下打印二叉樹
cnblogs == oot div from ack () emp off /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tree
劍指Offer——從上往下打印二叉樹
先進先出 public rom val nod top 二叉 () str 題目描述: 從上往下打印出二叉樹的每個節點,同層節點從左至右打印。 分析: 層次遍歷,利用隊列的性質,先進先出。 先將根結點的指針入隊。 如果隊列不為空,那麽打印隊列第一個指針指向的值,如果左
劍指Offer——按之字形順序打印二叉樹
打印二叉樹 sta cnblogs 我們 pre 方便 pri == stack 題目描述: 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 分析: 我們都知道二叉樹的層次遍歷
【劍指offer】面試題 28. 對稱的二叉樹
fin 技術分享 root 實現一個函數 面試題 分享 inf right png 面試題 28. 對稱的二叉樹 題目描述 題目:請實現一個函數,用來判斷一顆二叉樹是不是對稱的。註意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的。 解答過程 給定一個二叉
劍指 offer-從上往下打印二叉樹
poll roo off 一個棧 val printf pri 題目 模擬 題目:從上往下打印二叉樹 題目描述:從上往下打印出二叉樹的每個節點,同層節點從左至右打印 思路:考察二叉樹的 層序遍歷,通常借助使用一個隊列或一個棧來完成 若是要求每層數據從左到右保存則用隊列
數據結構(三十八)平衡二叉樹(AVL樹)
圖1 建立 滿足 技術分享 factor 這也 絕對值 因此 調整 一、平衡二叉樹的定義 平衡二叉樹(Self-Balancing Binary Search Tree或Height-Balanced Binary Search Tree),是一種二叉排序樹,其中每
劍指offer 23. 從上往下列印二叉樹
原題 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 Reference Answer 解題思路: 思路:用一個臨時陣列儲存需要列印的節點,如列印8時,將6和10存入臨時陣列 # -*- coding:utf-8 -*- # class TreeNode: #
劍指offer系列——按之字形順序列印二叉樹,把二叉樹列印成多行,序列化二叉樹
按之字形順序列印二叉樹 題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 解題思路: 法一: 需要兩個棧。我們在列印某一行節點時,把下一層的子節點儲存到相應的棧裡。 如果
劍指Offer 59. 按之字形順序列印二叉樹 (二叉樹)
題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 題目地址 https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=
[劍指offer] --23.從上往下列印二叉樹
題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNo
演算法題(三十五):二叉樹的下一個結點
題目描述 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。 分析 分情況討論: 1.如果結點有右孩子,則返回右子樹中最後一個左孩子; 2.如果結點沒有右孩子,且該結點是父結點的左孩子,則返回
演算法題(三十四):二叉樹的映象
題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。 輸入描述: 二叉樹的映象定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11 映象二叉樹 8
劍指offer 59. 按之字形順序列印二叉樹
題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 思路: 與逐層列印二叉樹一樣,只是多了層數判定,依據層數做判定輸出。 按之字形順序列印二叉樹需要兩個棧。我們在列印某一行