二叉樹的先序,中序,後序遍歷

2021-08-29 16:16:15 字數 873 閱讀 1577

首先為了方便大家記憶,作個解釋。

先序(preorder) ,中序(inorder),後序(postorder) 這裡指的是根節點的遍歷順序,確切叫先根(先根再左右),中根(先左再根再右),還是(先左後又再根)後根的順序輸出。

定義treenode

public class treenode

}

遞迴

public void preorder(treenode x,listans)
迭**法,迭代順序和中序遍歷是一樣的,只是加入結果的順序不一樣

public void inorder(treenode root,listans)

cur=stack.pop();

// ans.add(cur.val); //inorder

cur=cur.right;

} }

中序遍歷的寫法主要有兩種,乙個是遞迴,乙個是迭代的方式。關於二叉樹的問題,很多情況下是遞迴的寫法的,但是迭代也是一種換個思路的寫法。

遞迴的寫法

public void inorder(treenode x, listans)
迭代的寫法

public void inorder(treenode root,listans)

cur=stack.pop();

ans.add(cur.val);

cur=cur.right;

} }

遞迴寫法

public void postorder(treenode x, listans)

二叉樹先序 中序 後序遍歷

題目 用遞迴和非遞迴方式,分別按照二叉樹先序 中序和後序列印所有的節點。我們約定 先序遍歷順序為根 左 右 中序遍歷順序為左 根 右 後序遍歷順序為左 右 根。遞迴實現 遞迴遍歷二叉樹 先序 public void preorderrecur node head system.out.println...

二叉樹先序遍歷 中序遍歷 後序遍歷

輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...

二叉樹先序遍歷 後序遍歷 中序遍歷

從根部 a 開始,然後開始遍歷左子樹,直接找到 b 檢視 b 有沒有左子樹,有 d,再檢視 d 有沒有子樹,沒有,d 已經是葉子,所以第二個是 d。倒回去,取中 b,第三個數是 b。檢視 b 有沒有右子樹,有 e 檢視 e 有沒有子樹,有 g 左 h 右 所有後面三個數是 egh 先查左子樹,存在繼...