已知中後序遍歷 建立二叉樹 層序輸出

2021-07-13 14:05:20 字數 965 閱讀 3708

二叉樹後序:  左  - >  右  - > 根     後序給出的最後乙個節點為根節點

二叉樹中序:  左  - > 根  - >  右     中序可以在前序的基礎上將樹的左孩子,右孩子,完全確定。 下面就是乙個遞迴的過程

每次遞迴過程中 拿當前傳入的後序遍歷的尾節點 找到中序遍歷的該尾節點的位置。並將其劃分為左右兩個子樹。並鏈結在結構體指標上

#include

#include

#include

#include

#include

#include

using namespace std;

typedef struct treenode * bintree;

struct treenode

;bintree creattreebin(int in, int back,int len)

}t->right=creattreebin(in+i+1,back+i,len-i-1);

//在中序遍歷中找到根節點位置後,其右側即為右子樹

t->left=creattreebin(in,back,i);//在中序遍歷中找到根節點位置後,其左側即為左子樹

//傳參時注意,後序遍歷的尾節點已使用,調整傳參長度,不使其傳入

return t;

}int height(bintree t)

//查詢樹高

return theigth;

}void build(bintree bt)

//層序遍歷

if(t->right)}`

}int main()

for(i=0;i>in[i];

}t=creattreebin(in,back,n);

build(t);

return 0;}/*

9dbefaghci

defbhgica

*/

已知樹的中序 後序 先序遍歷,建立二叉樹

已知樹的中序和後序遍歷,建立二叉樹 個人感覺理解不了可以直接硬記,慢慢就能理解,知道思想不能理解也無所謂,會用就行 include include include includeusing namespace std int n int hou 50 int zhong 50 typedef str...

二叉樹 已知後序 中序遍歷,求先序遍歷

二叉樹後序遍歷序列是dabec,中序遍歷序列debac,它的前序遍歷的序列是什麼 1.由後序 lrd 得知c肯定為根結點 2.由中序 ldr 以c為根節點該樹必然只有左子樹 3.先從後序入樹 dabec 由遍歷規則得知,e 為第二層節點 於是有ce 4.結合中序遍歷debac觀察節點,由於 e為第二...

已知二叉樹先序遍歷中序遍歷求後序遍歷

思路簡介 先序遍歷中第乙個字母即為根節點,在中序遍歷中找到根節點的位置 把中序遍歷的字串序列從根節點分成兩部分,左側一部分構建左子樹,右側一部分構建右子樹 在 的基礎上在先序遍歷中也找到構建左右子樹的部分 遞迴還原二叉樹 後序遍歷輸出即可 include include using namespac...