二叉樹的不同形態

2021-10-12 09:55:45 字數 1660 閱讀 5592

題目: 二叉樹的不同形態

問題描述

給定二叉樹t(樹深度h<=10,深度從1開始,結點個數n<1024,結點編號1~n)的層次遍歷序列和中序遍歷序列,輸出t從左向右葉子結點以及二叉樹先序和後序遍歷序列。

輸入格式

輸入共三行:第一行是整數n,表示二叉樹中的結點數目;第二行有n個整數,表示該二叉樹的層次遍歷序列;第三行也是n個整數,表示該二叉樹的中序遍歷序列。整數間以空格隔開。

輸出格式

輸出三行,分別是:從左向右的葉子結點,先序遍歷序列,後序遍歷序列。結點編號用空格隔開。

樣例輸入

73 5 4 2 6 7 1

2 5 3 6 4 7 1

樣例輸出

2 6 1

3 5 2 4 6 7 1

2 5 6 1 7 4 3

題目解析:

明天補上

題目原始碼:

//creat by 絕跡

#include

#include

#define ok 1

#define error -1

typedef

struct treenode

treenode,

*tree;

treenode*

creattree

(int level,

int in,

int left1,

int right1,

int left2,

int right2)}if

(flag ==1)

break;}

root->data = level[i]

; root->lchild =

creattree

(level, in, left1 +

1, right1, left2, j -1)

; root->rchild =

creattree

(level, in, left1 +

1, right1, j +

1, right2)

;return root;}}

void

postorder

(tree t)

}void

preorder

(tree t)

}void

printleaf

(tree t)

printleaf

(t->lchild)

;printleaf

(t->rchild);}

}int

main()

for(

int j =

0; j < n; j++

) treenode* t =

null

; t =

creattree

(level,in,

0,n-1,

0,n-1)

;printleaf

(t);

printf

("\n");

preorder

(t);

printf

("\n");

postorder

(t);

return0;

}

n個結點,不同形態的二叉樹(數目 生成)

不同的二叉查詢樹 不同的二叉查詢樹 ii 給出n 3,有5種不同形態的二叉查詢樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3可以分析,當n 1時,只有1個根節點,則只能組成1種形態的二叉樹,令n個節點可組成的二叉樹數量表示為h n 則h 1 1 h 0 0 當n 2時,1個根節點固定...

n個結點,不同形態的二叉樹(數目 生成)

不同的二叉查詢樹 不同的二叉查詢樹 ii 給出n 3,有5種不同形態的二叉查詢樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3 可以分析,當n 1時,只有1個根節點,則只能組成1種形態的二叉樹,令n個節點可組成的二叉樹數量表示為h n 則h 1 1 h 0 0 當n 2時,1個根節點固...

n個結點,不同形態的二叉樹(數目 生成)

不同的二叉查詢樹 不同的二叉查詢樹 ii 給出n 3,有5種不同形態的二叉查詢樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3可以分析,當n 1時,只有1個根節點,則只能組成1種形態的二叉樹,令n個節點可組成的二叉樹數量表示為h n 則h 1 1 h 0 0 當n 2時,1個根節點固定...