数据结构之二叉树(二)

输出二叉树中所有从根结点到叶子结点的路径

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4
 5 struct BiTNode
 6 {
 7     char m_value;
 8     BiTNode *m_left;
 9     BiTNode *m_right;
10 };
11
12 //先序创建二叉树
13 void CreatBiTree(BiTNode *&root)
14 {
15     char nValue = 0;
16     cin >> nValue;
17     if (‘#‘ == nValue)
18     {
19         return;
20     }
21     else
22     {
23         root = new BiTNode();
24         root->m_value = nValue;
25         CreatBiTree(root->m_left);
26         CreatBiTree(root->m_right);
27     }
28 }
29
30 //输出二叉树中所有从根结点到叶子结点的路径(递归)
31 void FindAllPath(BiTNode *pRoot, vector<char> path)
32 {
33     if (pRoot != NULL)
34     {
35         path.push_back(pRoot->m_value);
36         if (pRoot->m_left == NULL && pRoot->m_right == NULL)
37         {
38             for (vector<char>::iterator iter=path.begin(); iter!=path.end(); iter++)
39             {
40                 cout << *iter << " ";
41             }
42             cout << endl;
43             return;
44         }
45         else
46         {
47             FindAllPath(pRoot->m_left, path);
48             FindAllPath(pRoot->m_right, path);
49         }
50     }
51 }
52
53 int main()
54 {
55     BiTNode *pRoot = NULL;
56     vector<char> path;
57     CreatBiTree(pRoot);
58     cout << "二叉树中从根到叶子结点的所有路径如下:" << endl;
59     FindAllPath(pRoot, path);
60     system("pause");
61     return 0;
62 }
时间: 2024-10-12 03:14:47

数据结构之二叉树(二)的相关文章

SDUT 3341 数据结构实验之二叉树二:遍历二叉树

数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点).请建立二叉树并按中序和后序的方式遍历该二叉树. Input 连续输入多组数据,每组数据输入一个长度小于50个字符的字符串. Output 每组输入数据对应输出2行:第1行输出中序遍历序列:第2行输出后序遍历序列

SDUT-3441_数据结构实验之二叉树二:遍历二叉树

数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点).请建立二叉树并按中序和后序的方式遍历该二叉树. Input 连续输入多组数据,每组数据输入一个长度小于50个字符的字符串. Output 每组输入数据对应输出2行: 第1行输出中序遍历序列: 第2行输出后序遍历序列. Sample Inp

【算法与数据结构】二叉树的 中序 遍历

前一篇写了二叉树的先序遍历,本篇记录一下二叉树的中序遍历,主要是非递归形式的中序遍历. 由于距离上篇有好几天了,所以这里把二叉树的创建和存储结构也重复的写了一遍. 二叉树如下 二叉树的存储方式依然是二叉链表方式,其结构如下 typedef struct _tagBinTree { unsigned char value; struct _tagBinTree* left; struct _tagBinTree* right; }BinTree, *PBinTree; 先序递归形式的创建二叉树代码

纸上谈兵: 树, 二叉树, 二叉搜索树

树的特征和定义 树(Tree)是元素的集合.我们先以比较直观的方式介绍树.下面的数据结构是一个树: 树有多个节点(node),用以储存元素.某些节点之间存在一定的关系,用连线表示,连线称为边(edge).边的上端节点称为父节点,下端称为子节点.树像是一个不断分叉的树根. 每个节点可以有多个子节点(children),而该节点是相应子节点的父节点(parent).比如说,3,5是6的子节点,6是3,5的父节点:1,8,7是3的子节点, 3是1,8,7的父节点.树有一个没有父节点的节点,称为根节点(

python环境下使用mysql数据及数据结构和二叉树算法(图)

python环境下使用mysql数据及数据结构和二叉树算法(图):1 python环境下使用mysql2使用的是 pymysql库3 开始-->创建connection-->获取cursor-->操作-->关闭cursor->关闭connection->结束45 代码框架6 import pymysql.cursors7 ###连接数据库8 connection = pymysql.connect(host='127.0.0.1',port=3306,user='roo

20172328《程序设计与数据结构》实验二:树

20172328<程序设计与数据结构>实验二:树 课程:<软件结构与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强老师 实验日期:2018年11月5日-2018年11月12日 必修选修: 必修 一.实验要求内容 实验1:实现二叉树 参考教材p212,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder) 用JUnit或自己编写驱动类对自己实现的LinkedB

20172303 2018-2019-1 《程序设计与数据结构》实验二报告

20172303 2018-2019-1 <程序设计与数据结构>实验二报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 范雯琪 学号:20172303 实验教师:王志强 助教:张师瑜/张之睿 实验日期:2018年11月5日 必修/选修: 必修 实验内容 本次实验主要是关于树的应用, 涉及了二叉树.决策树.表达式树.二叉查找树.红黑树五种树的类型,是对最近学习内容第十章和第十一章的一个总结. 节点一 参考教材P212,完成链树LinkedBinaryTree的实现(get

数据结构:二叉树的链式存储

数据结构:二叉树的链式存储(C语言版) 1.写在前面 二叉树同样有两种存储方式,数组和链式存储,对于数组来说,我们利用二叉树的性质然后利用下标可以方便的找到一个节点的子节点和父节点. 二叉树的性质: 1.二叉树的第i层上至多有2i-1个节点 2.深度为K的二叉树至多有2k-1个节点 3.任何一个二叉树中度数为2的节点的个数必度数为0的节点数目少1. 说明:度数为0,为叶子节点. 4.具有n个节点的完全二叉树的深度为|_Log2N_|+1 5.若完全二叉树中的某节点编号为i,则若有左孩子编号为2i

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

数据结构与算法二

1.课程安排表: 1. 线性表 2. 字符串 3. 栈和队列 4.树 5.查找 6.排序 7.暴力枚举法 8.广度优先搜索 9.深度优先搜索 10.分治 11.贪心 12.动态规划 13.图 14.数学方法与常见模型 15.大整数运算 16. 基础功能 2.   编程技巧: 1.把较大的数组放在main 函数(全局变量)外,作为全局变量,这样可以防止栈溢出,因为栈的大小是有限制的.GCC (C编译器) 段错误 2.如果能够预估栈,队列的上限,则不要用stack,queue,使用数组来模拟,这样速