內容:根據先序遍歷和中序遍歷結果來建立一棵樹
思路:
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個空...