C++实现对树的创建和前中后序遍历

时间:2022-09-25 14:29:55

#include<iostream>
#include<stdio.h>

using namespace std;

class BitNode
{
public:
char data;
BitNode * lchild;
BitNode * rchild;
};

class BitTree
{
private:
BitNode * pBase;
public:
BitTree()
{
CreateByPreOrder(pBase);
}
void show()
{
cout<<"前序遍历:"<<endl;
PreOrderTraverse(pBase);
cout<<endl<<"中序遍历:"<<endl;
InOrderTraverse(pBase);
cout<<endl<<"后序遍历:"<<endl;
BackOrderTraverse(pBase);
cout<<endl<<"深度为:"<<getTreeDeep(pBase)<<endl;
}
private:
void CreateByPreOrder(BitNode * &pB)
{
char ch;
if((ch=getchar())=='#')
{
pB=NULL;
}
else
{
pB=new BitNode;
pB->data=ch;
CreateByPreOrder(pB->lchild);
CreateByPreOrder(pB->rchild);
}
}
void PreOrderTraverse(BitNode * &pB)
{
if(pB)
{
cout<<pB->data;
PreOrderTraverse(pB->lchild);
PreOrderTraverse(pB->rchild);
}
}
void InOrderTraverse(BitNode * &pB)
{
if(pB)
{
InOrderTraverse(pB->lchild);
cout<<pB->data;
InOrderTraverse(pB->rchild);
}
}
void BackOrderTraverse(BitNode * &pB)
{
if(pB)
{
BackOrderTraverse(pB->lchild);
BackOrderTraverse(pB->rchild);
cout<<pB->data;
}
}
int getTreeDeep(BitNode * &pB)
{
int deep=0;
if(pB)
{
int lchildDeep=getTreeDeep(pB->lchild);
int rchildDeep=getTreeDeep(pB->rchild);

deep=lchildDeep>=rchildDeep?lchildDeep+1:rchildDeep+1;
}
return deep;
}
};

int main()
{
BitTree bt;
bt.show();
return 0;
}

C++实现对树的创建和前中后序遍历的更多相关文章

  1. &lbrack;C&plus;&plus;&rsqb; 非递归实现前中后序遍历二叉树

    目录 前置技能 需求描述 binarytree.h 具体实现 binarytree.cpp main.cpp 网上代码一搜一大片,大同小异咯. 书上的函数实现代码甚至更胜一筹,而且抄一遍就能用,唯一问 ...

  2. 数据结构-C语言递归实现树的前中后序遍历

    #include <stdio.h> #include <stdlib.h> typedef struct tree { int number ; struct tree *l ...

  3. C语言二叉树的创建、&lpar;先中后序&rpar;遍历以及存在的问题

    #include<stdlib.h> #include<stdio.h> #define True 1 #define False 0 typedef char TElemTy ...

  4. Binary Tree Traversal 二叉树的前中后序遍历

    [抄题]:二叉树前序遍历 [思维问题]: 不会递归.三要素:下定义.拆分问题(eg root-root.left).终止条件 [一句话思路]: 节点非空时往左移,否则新取一个点 再往右移. [输入量] ...

  5. POJ 2255 Tree Recovery &amp&semi;&amp&semi; Ulm Local 1997 Tree Recovery &lpar;二叉树的前中后序遍历&rpar;

    链接:poj.org/problem?id=2255 本文链接:http://www.cnblogs.com/Ash-ly/p/5463375.html 题意: 分别给你一个二叉树的前序遍历序列和中序 ...

  6. C&plus;&plus;二叉树前中后序遍历(递归&amp&semi;非递归)统一代码格式

    统一下二叉树的代码格式,递归和非递归都统一格式,方便记忆管理. 三种递归格式: 前序遍历: void PreOrder(TreeNode* root, vector<int>&pa ...

  7. 前中后序递归遍历树的体会 with Python

    前序:跟->左->右 中序:左->根->右 后序:左>右->根 采用递归遍历时,编译器/解释器负责将递归函数调用过程压入栈并保护现场,在不同位置处理根节点即可实现不 ...

  8. Qt实现 动态化遍历二叉树(前中后层次遍历)

    binarytree.h 头文件 #ifndef LINKEDBINARYTREE_H #define LINKEDBINARYTREE_H #include<c++/algorithm> ...

  9. 二叉树前中后&sol;层次遍历的递归与非递归形式(c&plus;&plus;)

    /* 二叉树前中后/层次遍历的递归与非递归形式 */ //*************** void preOrder1(BinaryTreeNode* pRoot) { if(pRoot==NULL) ...

随机推荐

  1. nginx正则表达式

    1.^:匹配字符串的开始位置: 2..*: .匹配任意字符,*匹配数量0到正无穷: 3.\. 斜杠用来转义,\.匹配.: 4.(jpg|gif|png|bmp)匹配jpg或gif或png或bmp 5. ...

  2. A&period;Kaw矩阵代数初步学习笔记 10&period; Eigenvalues and Eigenvectors

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  3. 浅谈网络爬虫爬js动态加载网页(二)

    没错,最后我还是使用了Selenium,去实现上一篇我所说的问题,别的没有试,只试了一下firefox的引擎,总体效果对我来说还是可以接受的. 继续昨天的话题,既然要实现上篇所说的问题,那么就需要一个 ...

  4. PHP中大括号&lbrace;&rcub;用法总结

    刚用到一个由字符串来设定对像属性名的功能.发现大括号的作用真强…. 1. 动态设置对象的属性名的使用:写法一(不能正确设置): $obj->$string[$key]; //这里只能使用$str ...

  5. &lbrack;itint5&rsqb;支持删除的后继查询

    http://www.itint5.com/oj/#49 这一题一开始想到是用HashSet+链表来做,链表记录prev和next.这样也可以,后来看到都是连续的整数,而且交流了一下觉得可以用类似并查 ...

  6. HDOJ -- 4632 区间DP

    Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65535 K (Java/ ...

  7. &lbrack;Swift&rsqb;LeetCode698&period; 划分为k个相等的子集 &vert; Partition to K Equal Sum Subsets

    Given an array of integers nums and a positive integer k, find whether it's possible to divide this ...

  8. C&plus;&plus; 之sizeof运算符

    sizeof运算符用来计算某个对象在内存中占用的字节数. 此运算符的使用形式为:sizeof(类型名)或sizeof(表达式). 计算结果是这个类型或者这个表达式结果在内存中占的字节数.

  9. Linq分组查询统计

    这里介绍Linq使用Group By和Count得到每个CategoryID中产品的数量,Linq使用Group By和Count得到每个CategoryID中断货产品的数量等方面. 学经常会遇到Li ...

  10. Scala使用JUnit4单元测试

    在项目开发中在很多地方都要做单元测试,在做Spark项目时使用Scala开发.所以总结一下Scala中的单元测试: 在Maven pom文件中添加依赖: <dependency> < ...