部落格295 由先序遍歷結果和中序遍歷結果建立樹

2021-10-07 04:38:04 字數 1403 閱讀 2801

內容:根據先序遍歷和中序遍歷結果來建立一棵樹

思路:

1、每次遞迴建立樹的左右子樹

2、由先序遍歷的第乙個資料就是根節點,然後這個節點在中序遍歷的位置的左邊為樹的左子樹成員,右邊為右子樹成員

由此可以劃分樹的左右子樹部分,進行遞迴處理

**:

/*

先序中序建樹

*/#include

#include

#include

#include

#include

using namespace std;

typedef

struct node

node,

*node_ptr;

void

tree_behind_view

(node_ptr root)

tree_behind_view

(root->left)

;tree_behind_view

(root->right)

;printf

("%c"

,root->c);}

node_ptr build_main

(char

* pre_start,

char

* pre_end,

char

* in_start,

char

* in_end)

else

}char

* root_position = in_start;

while

((root_position <= in_end)&&(

*root_position)

!= value)if(

(root_position == in_end)&&(

*root_position)

!= value)

int left_len = root_position - in_start;

char

* pre_left_end = pre_start + left_len;

if(left_len >0)

if(left_len < pre_end - pre_start)

return root;

}node_ptr build

(char pre,

char in,

int len)

return

build_main

(pre, pre + len -

1, in, in + len -1)

;}intmain()

由先序遍歷和中序遍歷生成二叉樹

生成演算法是遞迴的,對於先序序列來講,第乙個元素就是當前子樹的根節點,對於中序序列來講,每乙個中序序列都會被分割為兩個部分,這兩個部分就是下一次的要構造的子樹,所以說生成子樹的過程是自頂向下的 public class gentree string rootdata pre 0 string lef...

根據後序和中序遍歷輸出先序遍歷

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。輸入格式 第一行給出正整數nn le 30 30 是樹中結點的個數。隨後兩行,每行給出nn個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。輸出格式 在一行中輸出preorder 以...

根據後序和中序遍歷輸出先序遍歷

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空...