
打印输出二叉树中叶子的结点
发布日期:2021-05-07 17:58:52
浏览次数:18
分类:精选文章
本文共 1871 字,大约阅读时间需要 6 分钟。
问题描述:采用先序法建立一棵二叉树,并设计按先序输出二叉树的叶子结点。二叉树的数据域类型为字符型,扩展二叉树的叶子结点用“#”表示。要求可以输出多棵二叉树的叶子结点,当二叉树为空时程序结束。
输入描述:循环输入多棵扩展二叉树的先序遍历序列,每棵树占一行,以回车结束。每棵二叉树中结点之间以空格隔开。
输出描述:输出各二叉树中的叶子结点,每次输出后换行。当二叉树为空时,输出“NULL”,程序结束。
输入样例:A B # # C D # E # F # # G H # I K # # # #A B D H # # I # # E J # # K # # C F L # # M # # O #
输出样例:B F KH I J K L M N ONULL
问题分析:要输出叶子结点,需要计算结点的左右子树是否同时为空。如果是,则输出该结点的数据域。
代码实现:
#include#include using namespace std;struct Node { char data; Node* Lchild; Node* Rchild;};class Text {public: Text() { root = new Node(); } ~Text() { delete root; } void preOrderTraversal() { preOrder(root); } void judgeLeafNodes() { judge(root); }private: Node* root; static int count = 0; Node* createNode() { char ch; cin >> ch; if (ch == '#') { return new Node(); } else { return new Node(); } } void releaseNode(Node* node) { if (node == nullptr) return; releaseNode(node->Lchild); releaseNode(node->Rchild); delete node; } void preOrder(Node* node) { if (node == nullptr) return; if (node->Lchild == nullptr && node->Rchild == nullptr) { cout << node->data << " "; return; } preOrder(node->Lchild); preOrder(node->Rchild); } void judge(Node* node) { if (node == nullptr) { cout << "NULL" << endl; return; } if (node->Lchild == nullptr && node->Rchild == nullptr) { return; } judge(node->Lchild); judge(node->Rchild); }};int main() { while (true) { Text text; text.judgeLeafNodes(); text.preOrderTraversal(); cout << endl; if (cin >> ws && !cin) break; } return 0;}
注:以上代码实现了对多棵二叉树的处理,每棵树的输入占一行。程序通过先序遍历判断每个结点是否为叶子结点,并输出符合条件的叶子结点。输入结束时输出“NULL”并结束程序。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月02日 04时42分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 重写(override)和重载(overload)区别
2019-03-04
java 多态
2019-03-04
java 多态类型转换
2019-03-04
java ==和equals
2019-03-04
常用正则表达式
2019-03-04
C#中换行的代码
2019-03-04
用正则表达式过滤多余空格
2019-03-04
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
2019-03-04
泳道图简介
2019-03-04
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
2019-03-04
Java判断字符串是否为金额
2019-03-04
skyfans之每天一个Liunx命令系列之二:uptime
2019-03-04
Kubernetes十三--Pod定义文件内容详解
2019-03-04
普歌- LRF-(简单易懂)笔记本电脑USB接口案例 接口多态(向下转型)
2019-03-04
Java中如何构建树结构
2019-03-04
解决eclipse字体背景变红或者变绿的问题
2019-03-04
扫雷小游戏——简单易懂
2019-03-04
软件架构-zookeeper快速入门
2019-03-04
「初级篇」跟我一起学docker(四)--容器的基本操作
2019-03-04
22 岁毕业做程序员的「普通」人,50 岁时的人生轨迹是怎样的?
2019-03-04