力扣題解 94 二叉樹的中序遍歷

2021-10-23 23:23:14 字數 1301 閱讀 6777

給定乙個二叉樹,返回它的中序 遍歷。

示例:輸入: [1,null,2,3]

1\2

/3

輸出: [1,3,2]

高階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?

樹一種特殊的圖,是連通的,無迴路的無向圖。

因此,二叉樹的搜尋也稱二叉樹的遍歷,同樣有深度優先遍歷和廣度優先遍歷兩種方式。

廣度優先遍歷也稱為層序遍歷,遍歷原則為:以樹的根節點開始,按照樹的高度由低到高,一層一層地遍歷下去,每一層按照從左至右的順序遍歷,直至到達樹的最大深度,遍歷完全部節點為止。

深度優先遍歷,遍歷原則為:從樹的根節點開始,沿著左子樹進行深度遍歷,直到到達葉子節點為止;然後回溯到根節點,進行右子樹的深度遍歷,直到遍歷完所有節點。

具體的,按照根節點相對於子節點的訪問順序,可進一步分為前序遍歷、中序遍歷和後序遍歷。

這裡固定左節點和右節點的遍歷順序,那麼:

前序(pre-order)指先訪問根節點,再遍歷左子樹和右子樹;

中序(in-order)是指先遍歷左子樹,接著訪問根節點,最後遍歷右子樹;

後序(post-order)是指先遍歷左子樹,接著遍歷右子樹,最後訪問根節點。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

void

inorder

(treenode* node, vector<

int>

& ans)

inorder

(node-

>left, ans)

; ans.

push_back

(node-

>val)

;inorder

(node-

>right, ans);}

};

class

solution

//訪問根節點及左子樹這條路徑上的節點

treenode* node = stk.

top();

stk.

pop();

ans.

push_back

(node-

>val)

;//按照同樣的策略,深度遍歷右子樹

root = node-

>right;

}return ans;}}

;

力扣94 二叉樹的中序遍歷 中序遍歷

給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 12 3輸出 1,3,2 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?中序遍歷是左子樹 根 右子樹。這個是同乙個規律適用於整個樹,所以使用遞迴。結束條件為沒有發現值,即節點為null。definition for a bi...

94 二叉樹的中序遍歷

給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 這道題在王道408中有講到,但是記憶不是特別清晰了於是再寫了一次 首先當然是最簡單的遞迴寫法 class solution public listhelp treenode root,list list...

94 二叉樹的中序遍歷

94.二叉樹的中序遍歷 給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?definition for a binary tree node.struct treenode class solutio...