二叉樹後序: 左 - > 右 - > 根 後序給出的最後乙個節點為根節點
二叉樹中序: 左 - > 根 - > 右 中序可以在前序的基礎上將樹的左孩子,右孩子,完全確定。 下面就是乙個遞迴的過程
每次遞迴過程中 拿當前傳入的後序遍歷的尾節點 找到中序遍歷的該尾節點的位置。並將其劃分為左右兩個子樹。並鏈結在結構體指標上
#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...