題目描述:分別按照二叉樹先序,中序和後序列印所有的節點。
輸入:返回:[[1,2,3],[2,1,3],[2,3,1]]
思路:**:建立返回vector,vector的0號元素放在左右子樹遍歷之前,vector1號元素放在左右子樹遍歷之間,vector2號元素放在左右子樹遍歷之後
class
solution
vectorint>
>
threeorders
(treenode* root),,
};threeorder
(root, vect)
;return vect;}}
;
題目描述:給定乙個二叉樹,返回該二叉樹層序遍歷的結果,(從左到右,一層一層地遍歷) 例如:
給定的二叉樹是, 該二叉樹層序遍歷的結果是 [[3],[9,20],[15,7]]
思路:**:建立存總結果的vector res和每層結果的vector temp,使用佇列,按層遍歷,把每層裡的點push back到temp裡,然後把這一層push back到res裡。
class
solution
height++
; res.
push_back
(temp);}
return res;}}
;
題目描述:輸入一棵二叉樹,求該樹的深度。
從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
思路1:**:本質還是層次遍歷,用queue遍歷每層節點,設定乙個變數height記錄深度
class
solution
height++;}
return height;}}
;
思路2:**:遞迴遍歷左子樹和右子樹,最後結果取max+1
class
solution
};
題目描述:給定一棵二叉搜尋樹,請找出其中的第k小的treenode結點。
輸入:,3
返回:
思路:**:中序遍歷排好序,放進vector裡,return第k-1個元素即為第k小的節點
class
solution
treenode*
kthnode
(treenode* proot,
int k)
};
二叉樹題型思考總結
我們從兩道題出發總結二叉樹題型思考方向 題目很容易,講這道題是為了記錄一下寫遞迴函式的技巧 首先如果發現該題後序遍歷,自底向下返回子樹高度。那麼易解 class solution 函式作用 求子樹高度,不是平衡樹時返回 1 private int recur treenode root 但是如果沒想...
題集 二叉樹的遍歷各類題型彙總
例1 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。includeusing namespace std const int maxn 100 10 int post maxn in maxn int lchild maxn rchild maxn vectorans int dfs...
樹 二叉樹 滿二叉樹 完全二叉樹 堆 概念彙總
樹 乙個擁有n 個節點和n 1 條邊的乙個有向無環圖。二叉樹 每個節點最多有兩個子樹的樹結構。滿二叉樹 除最後一層無任何子節點外,每一層上的所有結點都有兩個子結點的二叉樹。完全二叉樹 由滿二叉樹而引出 二叉樹的深度為h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數 滿二叉 樹 第 h...