建立与遍历二叉树

题目:以字符串的形式定义一棵二叉树的先序序列,若字符是‘#’, 表示该二叉树是空树,否则该字符是相应结点的数据元素。读入相应先序序列,建立二叉链式存储结构的二叉树,然后中序遍历该二叉树并输出结点数据。

输入格式:

字符串形式的先序序列(即结点的数据类型为单个字符)

输出格式:

中序遍历结果

输入样例:

ABC##DE#G##F###

输出样例:

CBEGDFA


#include <iostream>using namespace std;struct BinaryTree_Node
{char value;                // 节点的值 BinaryTree_Node* lChild;   // 左子节点 BinaryTree_Node* rChild;   // 右子节点 // 节点的构造函数 BinaryTree_Node(): lChild(NULL), rChild(NULL){}
};typedef BinaryTree_Node* BT_Node; // 创建二叉树 (先序遍历)
BT_Node Create_BinaryTree()
{BT_Node root = new BinaryTree_Node();char v;cin >> v;if (v != '#'){root->value = v;root->lChild = Create_BinaryTree();root->rChild = Create_BinaryTree();}elseroot = NULL; return root;
}// 中序遍历
void In_traverse(BT_Node root)
{if (root == NULL)return;In_traverse(root->lChild);cout << root->value;In_traverse(root->rChild);
}int main()
{BT_Node root;root = Create_BinaryTree();In_traverse(root);
}

小结:——二叉树知识点

2.定义结点:

2.1 二叉链表:链式存储

2.2 定义结点 代码

struct BinaryTree_Node
{char date;        // 节点的值 BinaryTree_Node* lChild;   // 左子节点 BinaryTree_Node* rChild;   // 右子节点 // 节点的构造函数 BinaryTree_Node(): lChild(NULL), rChild(NULL){}
};

3.遍历(先序遍历、中序遍历、后序遍历和层次遍历)

type BinaryTree_Node* BT_Node;//先序遍历 ————  左子树-根节点-右子树  简称:根左右
void Pre_Traverse(BT_Node root)
{if (root == NULL)    // 递归出口return;cout << root->value;Pre_Traverse(root->lChild);Pre_Traverse(root->rChild);
}// 中序遍历  ————  左根右
void In_Traverse(BT_Node root)
{if (root == NULL)    // 递归出口return;In_traverse(root->lChild);cout << root->value;In_traverse(root->rChild);  } // 后序遍历 ————  左右根
void Post_Traverse(BT_Node root)
{if (root == NULL)    // 递归出口return;Post_Traverse(root->lChild);Post_Traverse(root->rChild);cout << root->value;
}// 层次遍历 --- 队列解法
void Level_Traverse(BT_Node root)
{queue<BT_Node> q;q.push(root);while(!q.empty()){BT_Node op = q.front();q.pop();cout << op->value;if (op->lChild != NULL)q.push(op->lChild);if (op->rChild != NULL)q.push(op->rChild);}
}

求二叉树节点的个数

// 求二叉树节点的个数
int GetNodeNum(BT_Node root)
{if (root == NULL)          // 递归出口 return 0;// 二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 根节点 return GetNodeNum(root->lChild) + GetNodeNum(root->rChild) + 1;
}

PTA - 建立与遍历二叉树相关推荐

  1. PTA - 按层次遍历二叉树

    按层次遍历二叉树 题目:以字符串的形式定义一棵二叉树的先序序列,若字符是'#', 表示该二叉树是空树,否则该字符是相应结点的数据元素.读入相应先序序列,建立二叉树,然后按层次遍历该二叉树并输出结点数据 ...

  2. 建立、遍历二叉树(二叉链表)

    建立二叉树: 由于先序.中序.后序遍历的任何一个遍历结果单独都不能唯一确定一颗二叉树,因此不能直接使用其中任何一个遍历结果来构造二叉树(原因是不能确定左右子树的大小(节点数),或者说不知道子树的结束位 ...

  3. sdut 2136 数据结构实验之二叉树的建立与遍历

    Problem Description 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点).请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树 ...

  4. 二叉树的建立与遍历(先中后层序)

    在做一些算法题时,我会经常用到VS2017去测试,每次去找一个合适的二叉树觉得很麻烦,今天就自己写了一个放在博客上,下次就直接复制了 包含二叉树的建立,以及二叉树的前序遍历.中序遍历.后序遍历和层序遍 ...

  5. 二叉树的建立和遍历算法 - 数据结构和算法47

    二叉树的建立和遍历算法 让编程改变世界 Change the world by program   有童鞋会说,我们上节课研究这么多遍历的方法干啥呢?聪明的鱼油们怎么看?! 对于二叉树,思路方面我们已 ...

  6. 小朋友学数据结构(3):二叉树的建立和遍历

    小朋友学数据结构(3):二叉树的建立和遍历 一.基本概念 BinaryTree.png 二叉树:每个结点的子结点个数不大于2的树,叫做二叉树. 根结点:最顶部的那个结点叫做根结点,根结点是所有子结点的 ...

  7. C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...

    二叉树的建立与遍历实验报告(c语言编写,附源代码).doc 第 1 页,共 9 页二叉树的建立与遍历实验报告级 班 年 月 日 姓名 学号_ 1实验题目建立一棵二叉树,并对其进行遍历(先序.中序.后序 ...

  8. 数据结构实验之二叉树的建立与遍历

    题目描述        已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点).请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度. 输入   ...

  9. 二叉树的建立与遍历完整代码_腾讯面试官这样问我二叉树,我刚好都会

    前记 上周我投递出了简历,岗位是后端开发工程师.这周腾讯面试官给我进行了视频面试.面试过程中他问了二叉树的问题. 二叉树相关算法题,在面试中出现的次数非常非常多,所以我面试之前也有所准备.今天结合面试 ...

最新文章

  1. rss阅读器保存html文件,轻量级RSS阅读器网页版:selfoss安装教程
  2. 五个计算机软件,近五个交易日计算机软件概念股市复盘(4月19日)
  3. 一款不错的基于WEB技术的文件服务器
  4. 思科路由器动态NAT配置
  5. 【目录】《剑指Offer》Java实现
  6. Linux网络配置:设置IP地址、网关DNS、主机名
  7. linux判断是否能上网_如何判断飘窗是否能砸掉?砸掉飘窗可以怎么利用?
  8. 迷你sql profile,给缺少sql跟踪的朋友们
  9. java画图中运用缓冲解决屏幕闪烁方案二
  10. 15. Provide access to raw resources in resouce-managing classes
  11. JavaScript快速入门-基础
  12. 圆周率π前百万位,完整版显示
  13. 解决Nvivo自动编码问题,nvivo自动编码语言包
  14. Altium_Protel99SE圆线路板添加工艺边
  15. 轮播图图片大小不统一
  16. EOS Dapps已成黑客攻击事件
  17. AMSR-E微波辐射计详细介绍
  18. 留良乡投资理财要合理配置资产
  19. 安卓 NDK人脸识别 身份识别
  20. flash按钮脚本祥解

热门文章

  1. 2021-2027全球与中国光刻掩膜版市场现状及未来发展趋势
  2. Hello, Geant4
  3. js截取字符串,去掉前几位
  4. html5页面文件打包,Webpack入门(四)——HTML打包
  5. python输入个人所得税计算_2020年你会算个人所得税吗?没关系,python脚本帮助你!...
  6. 《Data Mining》第2章翻译 数据预处理
  7. 印章仿制工具_ps仿制印章工具怎么使用
  8. keil5工具的相关配置
  9. On the Uncertain Single-View Depths in Endoscopies
  10. 画论40 王穉登《吴郡丹青志》