C++创建二叉树,C++实现二叉树
永远的神干货盘点
原文链接
使用C构建一个二叉树并复制、输出。
#包含标准视频
#包含标准库
//#包含cstdio
#包含矢量
#包括输入输出流
#包括堆栈
#包含标准库函数
#包含字符串
使用命名空间标准
struct TreeNode //定义二叉树
int val//当前节点值用英国压力单位表示
struct TreeNode * left//指向左子树的指针用左边的表示
struct TreeNode * right//指向右子树的指针用正确表示
TreeNode(int x) :val(x),left(NULL),right(NULL) { } //初始化当前结点值为x,左右子树为空
//创建树
TreeNode* insert(TreeNode* tree,int value)
TreeNode * node=(TreeNode *)malloc(sizeof(TreeNode));//创建一个节点
节点值=值;//初始化节点//malloc函数可以分配长度
node-left=NULL;
node-right=NULL;
TreeNode * temp=tree//从树根开始
while (temp!=空)
如果(值临时值)//小于根节点就进左子树
if (temp- left==NULL)
左侧温度=节点;//新插入的数为临时雇员的左子树
返回树;
else //下一轮判断
temp=temp-left;
else //否则进右子树
if (temp- right==NULL)
右侧温度=节点;//新插入的数为临时雇员的右子树
返回树;
else //下一轮判断
temp=temp-right;
返回树;
//************* 输出图形二叉树*************
void output_impl(TreeNode* n,bool left,字符串常量缩进)
如果(n-右)
output_impl(n- right,false,indent (left? : ));
标准输出缩进;
cout(左?\\ : /);
cout -;
cout n-val endl;
如果(n-左)
output_impl(n- left,true,indent (left? : ));
空的输出(TreeNode* root)
如果(根右)
output_impl(root- right,false, );
标准输出根值恩德尔
如果(左根)
output_impl(root- left,true, );
系统("暂停");
//******************************************
void CopyBiTree(TreeNode* root,TreeNode* newroot) //复制二叉树
if (root==nullptr)
返回;
其他
newroot- val=root-
如果(根-左!=nullptr)
newroot- left=新的TreeNode(0);
如果(root-右!=nullptr)
newroot- right=新的TreeNode(0);
CopyBiTree(左根,新左根);
CopyBiTree(右根,新右根);
//输出(新根);
//====================测试代码====================
int main()
TreeNode * tree=new TreeNode(10);//树的根节点
TreeNode * treeresult
treeresult=insert(tree,6);//输入n个数并创建这个树
treeresult=insert(tree,4);
treeresult=insert(tree,8);
treeresult=insert(tree,14);
treeresult=insert(tree,12);
treeresult=insert(tree,16);
TreeNode * mirroot=new TreeNode(10);
CopyBiTree(treeresult,mirroot);//复制二叉树
输出(树形结果);//输出原二叉树
输出(mirroot);//输出复制的二叉树
}
学习更多编程知识,请关注我的公众号:
代码的路
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。