二叉樹 根據序列建樹

2021-09-18 05:26:28 字數 1096 閱讀 4894

#include

#include

using namespace std;

typedef

struct node

btnode;

//最好先在稿紙上寫出a0...ak,ak+1...an-1的序列,找到左右子樹的起點和終點

void

create

(btnode *

&t,char

*pre,

char

*in,

int n)

//n為該樹的結點數 (思想為分治)

else

}create

(t->lchild, pre+

1, in, k)

;//該樹的左子樹對應的先序序列以pre+1為根結點,中序序列從in開始,有k個結點。

create

(t->rchild, pre+k+

1, in+k+

1, n-k-1)

;//該樹的右子樹對應的先序序列以pre+k+1為根結點,中序序列從p+1開始,含n-k-1個結點。 }}

void

pre(btnode *t)

intmain()

//dgbaecf

//gdbefca

#include

#include

using namespace std;

typedef

struct node

btnode;

void

create

(btnode *

&t,char

*pos,

char

*in,

int n)

else

}create

(t->lchild, pos, in, k)

;create

(t->rchild, pos+k, in+k+

1, n-k-1)

;}}void

pre(btnode *t)

}int

main()

二叉樹 根據二叉樹遍歷序列構造二叉樹

二叉樹的節點型別宣告如下 struct btnode 定理1任何 n 0 個不同節點的二叉樹,都可由它的前序序列和中序序列唯一地確定。根據前序遍歷的特點,知前序序列 presequence 的首個元素 presequence 0 為二叉樹的根 root 然後在中序序列 insequence 中查詢此...

二叉樹 根據遍歷構造二叉樹

二叉樹中的三種遍歷方式,是我們最為熟知的,通過先序遍歷 中序遍歷或者是中序遍歷 後序遍歷都可以唯一確定一棵二叉樹 但是注意,先序遍歷 後序遍歷不能確定一棵二叉樹,但是如果一棵二叉樹中只有度為0和度為2的節點,那麼這種遍歷方式也是可以確定一棵確定的二叉樹的。先序 中序 構造二叉樹 下面我們分別來看一下...

重建二叉樹 根據先序序列與中序序列,重建二叉樹

假設已知先序序列為pre1 pre2 pren,中序序列為in1 in2 inn,如圖所示 解題思路 根據先序序列和中序序列找到根節點,根據根節點劃分左子樹和右子樹的數目,然後再次遞迴進行建立左子樹與右子樹的結點。不管是左子樹還是右子樹都遵循遍歷的原則 實現 先序序列區間wie prel,prer ...