二叉樹題型彙總

2021-10-22 04:28:05 字數 1763 閱讀 1445

題目描述:

分別按照二叉樹先序,中序和後序列印所有的節點。

輸入:返回:[[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...