码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的构造方法

时间:2015-02-10 15:27:06      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:构造二叉树   c++   

做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);

}





二叉树的构造方法

标签:构造二叉树   c++   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!