二叉树的创建与遍历
来源:互联网 发布:js数组定义的方式 编辑:程序博客网 时间:2024/05/19 23:14
二叉树是一个极其重要的数据结构,必须稳固掌握,在下就浅谈二叉树的基本操作。首先,是二叉树的创建,创建分为三种方式,先序,中序,后序,本博文以先序为例,其他两种类似。亲身测试,能执行。代码如下:
h文件
#ifndef _TREE_H#define _TREE_H#include<vector>#include<iostream>using namespace std;typedef struct BiNode{ char data; BiNode *left,*right;}BiNode,*BiTree;void CreateBiTree(BiTree &T);void PrintTree(BiTree &T);#endif
cpp文件
#include"Tree.h"void CreateBiTree(BiTree &T){ char c; cin >> c; if('#' == c) T = NULL; else { T = new BiNode; T->data = c; CreateBiTree(T->left); CreateBiTree(T->right); } }
此处,特别要注意输入数据的格式,不同的创建方法,输入格式不同,如果输入格式不匹配,将得不到任何结果,会处于循环递归,切记。如果你是使用先序进行创建二叉树,那么在输入数据的时候,必须要用先序的二叉树格式,此处用#代表最后的叶子节点,如果没有这个,将无穷递归下去。
二叉树的遍历与创建 一样,本例也用先序遍历为例进行说明,很简单,一看就明白,代码如下:
void PrintTree(BiTree &t){ if(t==NULL) { return; } else { cout<<t->data; PrintTree(t->left); PrintTree(t->right); }}
先访问根节点,在访问左子树,最后访问右子树,当访问到左子树的叶子节点,先访问左节点,再访问右节点,然后递归上去到父节点级别,由于其左右叶节点的父节点早之他们先被访问,所以会跳转到访问该父节点的右兄弟,这样依次递归,最终访问完所有节点。
1 0
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历(递归)
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历
- 二叉树的创建与层次遍历
- 二叉树的创建与递归遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 非二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历1
- 【bzoj3196】【坑】Tyvj 1730 二逼平衡树 线段树套Treap/Splay
- Java RMI学习
- Android R文件丢失或R cannot be resolved to a variable
- openjudge 切割回文
- 用conda管理Python包
- 二叉树的创建与遍历
- makefile简单编写
- Css和Jquery的一些学习认识(一)
- 错误:App Transport Security has blocked a cleartext HTTP...
- VS常用快捷键,真的是常用
- 关于实现自定义浏览器框架的相关细节问题
- RBAC权限管理
- 备忘-设计模式
- C# 多文件重命名思路及实现 下:实例