DS二叉树—二叉树构建与遍历(不含框架)
题解:
- 这里面myTree中的root成员是在main函数中声明,但在CreateTree中malloc,所以注意CreateTree函数要传引用。
题目:
问题 A: DS二叉树—二叉树构建与遍历(不含框架)
时间限制: 1 Sec 内存限制: 128 MB
提交: 498 解决: 384
[提交][状态][讨论版]
题目描述给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘#’表示,例如AB#C##D##),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果。
输入第一行输入一个整数t,表示有t个二叉树第二行起输入每个二叉树的先序遍历结果,空树用字符‘#’表示,连续输入t行。输出输出每个二叉树的先序遍历、中序遍历和后序遍历结果。样例输入
2
AB#C##D##
AB##C##
样例输出
ABCD
BCAD
CBDA
ABC
BAC
BCA
代码块:
#include <iostream>
using namespace std;typedef struct BiTNode
{char data;struct BiTNode *lchild, *rchild;
} BiTNode;typedef struct BiTree
{BiTNode *root;
} BiTree;void CreateTree(BiTNode *&p)
{char c;cin>>c;if(c!='#'){p = new BiTNode;p->data = c;CreateTree(p->lchild);CreateTree(p->rchild);}elsep = NULL;
}void PreOrderTraverse(BiTNode *p)
{if(p){cout<<p->data;PreOrderTraverse(p->lchild);PreOrderTraverse(p->rchild);}
}void InOrderTraverse(BiTNode *p)
{if(p){InOrderTraverse(p->lchild);cout<<p->data;InOrderTraverse(p->rchild);}
}void PostOrderTraverse(BiTNode *p)
{if(p){PostOrderTraverse(p->lchild);PostOrderTraverse(p->rchild);cout<<p->data;}
}int main(void)
{int t;cin>>t;while(t--){BiTree myTree;CreateTree(myTree.root);PreOrderTraverse(myTree.root);cout<<endl;InOrderTraverse(myTree.root);cout<<endl;PostOrderTraverse(myTree.root);cout<<endl;}return 0;
}
问题代码:
#include <iostream>
using namespace std;typedef struct BiTNode
{char data;struct BiTNode *lchild, *rchild;
} BiTNode;typedef struct BiTree
{BiTNode *root;
} BiTree;BiTNode * CreateTree(BiTNode *p)
{//不使用引用的递归方法。char c;cin>>c;if(c!='#'){p = new BiTNode;p->data = c;CreateTree(p->lchild);//修改:p->lchild = CreateTree(p->lchild);CreateTree(p->rchild);//修改:p->rchild = CreateTree(p->rchild);//这样修改后就是正确代码了,问题在于递归中return的p没有用上,内层递归结束后return的值要赋值给传入的值。}elsep = NULL;return p;
}void PreOrderTraverse(BiTNode *p)
{if(p){cout<<p->data;PreOrderTraverse(p->lchild);PreOrderTraverse(p->rchild);}
}void InOrderTraverse(BiTNode *p)
{if(p){InOrderTraverse(p->lchild);cout<<p->data;InOrderTraverse(p->rchild);}
}void PostOrderTraverse(BiTNode *p)
{if(p){PostOrderTraverse(p->lchild);PostOrderTraverse(p->rchild);cout<<p->data;}
}int main(void)
{int t;cin>>t;while(t--){BiTree myTree;myTree.root = CreateTree(myTree.root);PreOrderTraverse(myTree.root);cout<<endl;InOrderTraverse(myTree.root);cout<<endl;PostOrderTraverse(myTree.root);cout<<endl;}return 0;
}
DS二叉树—二叉树构建与遍历(不含框架)相关推荐
- Java实现二叉树的构建与遍历
转载:http://ocaicai.iteye.com/blog/1047397 目录: 1.把一个数组的值赋值给一颗二叉树 2.具体代码 1.树的构建方法 2.具体代码 Java代码 packa ...
- Java二叉树的构建与遍历
一.二叉排序树定义 1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree).其定义为:二叉排序树或者是空树,或者是满足如下性 ...
- 问题 A: DS二叉树—二叉树构建与遍历
第一次写博客,不足之处请大家包涵指出!谢谢! 问题 A: DS二叉树-二叉树构建与遍历(不含框架) 题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符'#'表示,例如AB#C##D ...
- 二叉树层序遍历递归与非递归_二叉树基础(1)-构建和遍历(递归和非递归)...
二叉树的构建有2种方式:1.直接输入数字.2.根据两种顺序来判断另外一中顺序(后面会提到) 这里分享第一种构建方式,二叉树的前中后三种遍历方式(递归和非递归版本),和二叉树的层次遍历. 见代码demo ...
- 二叉树的构建及各种遍历回顾
二叉树的构建及各种遍历回顾 直接上代码 1 #ifndef TREE_H2 #define TREE_H3 4 #include <iostream>5 #include <mall ...
- 线索二叉树中序非递归线索化以及递归线索化构建和遍历算法
引文 大部分教材给出了 线索二叉树的中序递归线索化以及中序遍历,但是没给出非递归,现在网上大部分非递归算法代码各种条件判断写的比较离谱,所以干脆自己总结了一个清晰的.线索二叉树中序非递归线索化以及递归 ...
- 51. Leetcode 106. 从中序与后序遍历序列构造二叉树 (二叉树-二叉树构建)
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 .示例 1:输入:inor ...
- 50. Leetcode 105. 从前序与中序遍历序列构造二叉树 (二叉树-二叉树构建)
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点.示例 1:输入: preord ...
- 二叉树的创建和遍历-C语言实现
二叉树的创建和遍历-C语言实现 链式存储结构 struct BinaryTreeNode {//数据char data;//左子树BinaryTreeNode *leftChild;//右子树Bina ...
最新文章
- Tesla AutoPilot纯视觉方案解析
- 从IoT World 2019看全球IoT九大发展趋势
- 服务器无限火力时间,LOL无限火力2018时间表6月具体开启时间 无限火力模式什么时候出...
- 电脑安装python3.7说缺少-安装python缺少
- lisp xy轴不等比缩放_UV的详细解释,不懂得赶紧看过来!
- c语言标准io中可读可写,C语言标准IO: [先读再feof] VS [先feof再读]
- Tomcat无法启动,报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
- Git 合并分支选项 --squash 合并提交历史
- 美国已批准马斯克的SpaceX发射1.2万颗卫星 以打造一个天基互联网
- sqlserver 2012 不允许保存更改 的解决办法 0108
- 【彩彩只能变身队】用户需求分析(一)—— 调查问卷
- 18 个惊人的 GitHub 仓库
- 利用Google翻译实现网站国际化——js插件
- 【Excel】按百分比随机抽取excel中数据
- ThinkPad默认墙纸(心经版)
- 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计
- ubuntu ffmpeg 录制系统音频
- java对接快递鸟单号查询自动识别api接口,调用代码示例
- Technical Artist的不归路 —— 创建游戏世界前团队交流之我见
- Java Vs. C♯