做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,dat