首页 > 其他 > 详细

二叉树的构造方法

时间:2015-02-10 15:25:45      阅读:306      评论:0      收藏:0      [点我收藏+]

做Leetcode上面的题目时,遇到二叉树的问题,想要用一个二叉树进行验证,每次构造二叉树都很麻烦,特此写一个构造函数。

1.用数组构造二叉树

void treeNodeConstructor(TreeNode *&root, int data[],int n,int& index){//此处root一定要加&,为对指针的引用
	/*
	data为存储节点数据的数组,n为data数组的长度,index为数组的索引。index也要用引用
	*/
    if(index>=n)
	{
		return;
	}
	int e = data[index++];
    if(e == '#'){
        root = nullptr;
    }else{
        root = new TreeNode(e) ;
		treeNodeConstructor(root->left, data,n,index);  //递归构建左子树
		treeNodeConstructor(root->right,data,n,index);  //递归构建右子树
    }
}


主函数中调用为:

int main()
{
	int data[11]={1,2,4,'#','#','#',3,'#',6,'#','#'};//先序遍历的序列
	TreeNode t(1);
	TreeNode *root=&t;
	int index=0;
	treeNodeConstructor(root,data,11,index);
	Solution S;
	cout<<S.sumNumbers(root);
	return 0;
}



2.自行输入节点

void CreateBiTree(TreeNode *&root)
{
	int i;
	cin>>i;//按先序遍历的序列输入
	if(i=='#')//结束条件,cin不能输入#,而要输入35
	{
		root=nullptr;
		return;
	}
	else
	{
		root=new TreeNode(i);
		CreateBiTree(root->left);
		CreateBiTree(root->right);
		//return;
	}
}

调用函数:

int main()
{

	TreeNode t(1);
	TreeNode *root=&t;
	CreateBiTree(root);

}





二叉树的构造方法

原文:http://blog.csdn.net/yinqiaohua/article/details/43701889

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!