描述

设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法实现该二叉树的双序遍历(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)。

输入

多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。

输出

每组数据输出一行,为双序遍历法得到的二叉树序列。

输入样例 1

ab000
ab00c00
0

输出样例 1

abba
abbacc

思路:

可能主要是看不懂题意吧,题目里“访问这个节点”的意思就是输出当前节点的data值(想一想可以理解,如果没有输出,系统怎么知道你是不是真的访问了呢?)“再按双序遍历”->自己调用自己,这是很明显的一句递归。这样就能看懂题意了~

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
typedef struct BNode
{char data;struct BNode* lchild, * rchild;
}*BTree, BNode;
void Create(BTree& bt)
{char c;cin >> c;if (c == '0')bt = NULL;else{bt = new BNode;bt->data = c;Create(bt->lchild);Create(bt->rchild);}
}
void Create(BTree& bt, char c)
{if (c == '0')bt = NULL;else{bt = new BNode;bt->data = c;Create(bt->lchild);Create(bt->rchild);}
}
void Traverse(BTree bt)
{if (bt == NULL)return;else{cout << bt->data;Traverse(bt->lchild);cout << bt->data;Traverse(bt->rchild);}
}
int main()
{while (1){char c;cin >> c;if (c == '0')break;BTree b;Create(b, c);Traverse(b);cout << endl;}return 0;
}

3004基于二叉链表的二叉树的双序遍历(附题意解释)相关推荐

  1. 3010基于二叉链表的二叉树高度的计算(附思路,WA的一种可能情况及代码)

    基于二叉链表的二叉树高度的计算 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为 ...

  2. 3003 基于二叉链表的二叉树左右节点的交换 附思路

    孩子为什么是敏感词.. 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为' ...

  3. 3006基于二叉链表的二叉树最长路径的求解(附思路)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为 ...

  4. 3010基于二叉链表的二叉树高度的计算

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...

  5. 3003基于二叉链表的二叉树左右子树的交换

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为空) ...

  6. 【数据结构】基于二叉链表的二叉树结点个数的统计

    基于二叉链表的二叉树结点个数的统计 描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数 ...

  7. 基于二叉链表的二叉树高度的计算

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元素为'0'时,表示该结点为空).当输 ...

  8. 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)

    以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...

  9. 3009基于二叉链表的二叉树结点个数的统计(附思路)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0.1.2)个数进行统计. 输入 多组数据.每组数据一行,为二叉树的前序序列(序列中元 ...

最新文章

  1. 开启angular10第一个项目
  2. mysql8.0卸载出现问题,Windows环境下MySQL 8.0 的安装、配置与卸载
  3. 安装mysql和memcached
  4. [C#][Report]Cry
  5. Java FAQ(6)
  6. java 039 s rule_Java开发架构篇:DDD模型领域层决策规则树服务设计
  7. 【Codeforces1327A】: Sum of Odd Intergers C/C++题解
  8. python语言入门n-Python基础语法学习笔记
  9. 天猫总架构师何崚:好的技术团队不是“需求翻译机”或“架构优化机”
  10. 快速沃尔什变换(FWT)
  11. 替换系统wsock32.dll,实现封包拦截
  12. 韩顺平php视频笔记49 函数深入 php的值传递与引用传递 goto
  13. Python的开源人脸识别库:离线识别率高达99.38%
  14. linux学习之vi编辑器的使用详解
  15. 免费CSDN积分获取
  16. java并发编程实战源码_java并发编程实战(附源码)
  17. iOS平台上aa(见缝插针)游戏的简易实现
  18. 5G的网络切片功能概述
  19. Graphene(石墨烯)区块传播技术能够实现10倍的更高效率
  20. 触动精灵贝塞尔曲线Bezier Curve

热门文章

  1. 不同用户同时并发测压_教你 7 招,迅速提高服务器并发能力!
  2. Javascript---条件运算符
  3. nginx正常启动,ip直接访问失败问题
  4. ltp-ddt qspi_mtd_dd_rw error can't read superblock on /dev/mtdblock0
  5. Js 怎么遍历json对象所有key及根据动态key获取值(根据key值获取相应的value值)...
  6. Flutter Trying to embed a platform view but the PrerollContext does not support embedding
  7. java基础基本数据类型对象包装
  8. Java中的垃圾回收器的类型概述 《对Java的分析总结》(六)
  9. C++用libcurl通过HTTP以表单的方式Post数据到服务器
  10. 性能测试和性能分析的基础概念