剑指Offer之重建二叉树(题6)
1/****************************************2>FileName:test.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月20日星期五16时11分40秒6****************************************/78#include<stdio.h>910BinaryTreeNode*CreateTree(int*first,int*second,intlen)11{12if(first==NULL||second==NULL||len<=0)13{14returnNULL;15}1617intnum=first[0];18BinaryTreeNode*node=newBinaryTreeNode(num);//写入根节点的值1920inti=0;21for(;i<len;i++)//在中序数列中找到与根节点值相同的值22{23if(second[i]==num)24{25break;26}27}2829node->m_pLeft=CreateTree(first[1],second[0],i);//递归创建左子树30node->m_pRight=CreateTree(second[i+1],second[i+1],len-i-1);//递归创建右子树3132returnfirst[0];//返回根节点33}34353637//总结:当遇到一般的情况与第一种情况相同时,可以考虑递归算法。38//当用递归算法时,要先找出一般规律,然后根据这个一般规律进行写代码
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。