根據先序遍歷和中序遍歷建立二叉樹

2021-08-04 10:14:50 字數 1278 閱讀 7028

先序遍歷的順序是根左右,中序遍歷的順序是左根右。根據這一特性,先序遍歷的第乙個元素肯定是根節點。所以我們只要在中序遍歷中找到該根節點的值,根節點以左就是它的左子樹,根節點以右就是它的右子樹,然後就可以遞迴的方式建立二叉樹

假設現在有一顆二叉樹如下

先序序列為(18,14,7,3,11,22,35,27)

中序序列為(3,7,11,14,18,22,27,35)

首先根據先序序列得二叉樹的根節點是18,然後根據給定的先序序列可以得知18的左子樹的中序序列為(3,7,11,14,),18的右子樹的中序序列為(22,37,35),18的左子樹的先序序列為(14,7,3,11),18的右子樹的先序序列為(22,35,37),進而對18的左右子樹分別類推進行處理,便可以確定整顆二叉樹。

public

static treenode createbypreandin(object pre,object in,int prestart,int preend,int instart,int inend)

}return root;

}

public static void main(string args) ;

object in=;

treenode root=createbypreandin(pre, in, 0, pre.length-1, 0, in

.length-1);

system.out

.print("先序序列為:");

preorder(root);

system.out

.println();

system.out

.print("中序序列為:");

inorder(root);

system.out

.println();

system.out

.print("後序序列為:");

postorder(root);

system.out

.println();

system.out

.print("層次遍歷為:");

二叉樹遍歷的過程可以參考二叉樹的建立,遞迴遍歷以及非遞迴遍歷

根據二叉樹的先序遍歷和中序遍歷建立二叉樹

根據二叉樹的先序遍歷和中序遍歷建立二叉樹 rebacktree 根據二叉樹的先序遍歷和中序遍歷建立二叉樹。rebacktree1 根據二叉樹的後序序遍歷和中序遍歷建立二叉樹。include stdio.h include stdlib.h typedef struct node node,nodep...

二叉樹 根據先序和中序遍歷輸出後序遍歷

根據兩種遍歷順序確定樹結構 build tree 題目描述 輸入第1行 二叉樹的前序遍歷順序 第2行 中序遍歷順序 輸出 二叉樹的後序遍歷順序 樣例輸入 abcdefgh cbedaghf 樣例輸出 cedbhgfa 分析 這道題最核心的問題在於如何建樹 或模擬建樹 類似於分治 遞迴 我們設先序串為...

根據二叉樹的先序和中序遍歷輸出層序遍歷

寫一下我的乙個思路,coding就不貼了。如何分割先序和後序的方法可以看我輸出後序遍歷那篇部落格,這裡只談談分割後怎麼遞迴能得到層次遍歷的方法。當然方法有很多,我這裡提供一種暴力一點,通用一點的方法。我給這種方法起了個名字叫標籤繫結法。所謂標籤繫結,就是我在把元素新增到result列表的時候,不是直...