重建二叉树

不写了,写了这么久没保存,网速太慢了。

已知二叉树的前序遍历和中序遍历的结果,重建二叉树。

 1 node pre_order[5]={'a','b','d','c','e'};
 2 char in_order[5]= {'d','b','a','e','c'};
 3 node rebuild[5];
 4 void rebuild_tree(char pre_order[],char in_order[],node rebuild[],int size)
 5 {
 6     rebuild->m_value=*pre_order;
 7     rebuild->m_lefttree=NULL;
 8     rebuild->m_righttree=NULL;
 9     char* p=in_order;
10     int left_size=0;
11     while (left_size<size&&*p++!=*pre_order)
12     {
13         ++left_size;
14     }
15     ASSERT(left_size<size);
16     int right_size=size-left_size-1;
17     if (left_size)
18     {
19         rebuild->m_lefttree=rebuild+1;
20         rebuild_tree(pre_order+1,in_order,rebuild+1,left_size);
21     }
22     if (right_size)
23     {
24         rebuild->m_righttree=rebuild+left_size+1;
25         rebuild_tree(pre_order+left_size+1,in_order+left_size+1,rebuild+left_size+1,right_size);
26     }
27 }

 

 

posted on 2013-07-18 21:09  听雪同学  阅读(198)  评论(0)    收藏  举报

导航