二叉樹先序遍歷,中序遍歷,後序遍歷,層次遍歷。

2021-08-10 19:14:02 字數 1256 閱讀 9796

原理

如圖

先序遍歷結果為——abdhecfg

(首先從根節點開始,然後左節點,左節點成為根節點,然後再左節點,然後右節點(如果左子樹遍歷完後就遍歷該根節點的右子樹))

中序遍歷結果為——hdbeafcg

(當左節點被讀取後,左節點被當作根節點)

後序遍歷結果為——hdebfgca

(注意每個節點的左右子樹必須遍歷完)

層次遍歷結果為——abcdefgh

先序遍歷為 abcdefghijk

中序遍歷為 cedfbahkjig

後序遍歷為 efdcbkjihga

一些試題

已知部分遍歷,求樹或其他序列

操作

//先序遍歷

void preorderwithoutrecursion()

} cout

<< endl;

} }

//中序遍歷

void inorderwithoutrecursion()

else

} cout

<< endl;

} }

//後序遍歷  

void postorderwithoutrecursion()

while (!s.empty())

} }

cout << endl;

} }

void preorder (node *p) 

}void inorder (node *p)

}void postorder (node *p)

}

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

輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 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 先查左子樹,存在繼...

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

二叉樹先序遍歷 中序遍歷 後序遍歷 include include typedef struct bitnodebitnode,bitree void visit bitnode c 先序遍歷 void preorder bitree t 中序遍歷 void inorder bitree t 後序遍...