二叉树的遍历二叉树的遍历指的是从根结点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。二叉树的遍历方法:前序遍历:规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。1 void PreOrderTraverse(BiTree...
分类:
编程语言 时间:
2015-03-10 11:44:49
阅读次数:
240
class Node{public: int data; Node* left; Node* right;};void pre-order(Node* root){ stack stk; if (root) stk.push(root); while...
分类:
其他好文 时间:
2015-02-24 16:16:46
阅读次数:
122
/* 1.二叉树遍历算法提供了二叉树的一次性遍历,可是二叉树遍历算法无法实现用户程序像分步 遍历单链表那样分步遍历二叉树。线索二叉树就是专门为实现分步遍历二叉树而设计的。线索二叉树能够实现像双向 链表那样,既能够从前向后分步遍历二叉树,又能够从后向前分步遍历二叉树 2.当按某种规则遍历二叉树时,保存...
分类:
其他好文 时间:
2015-02-21 19:58:01
阅读次数:
202
中序遍历(左中右)普通树有两种遍历方式: 深度优先遍历。 先根遍历 –> 二叉树中的先序遍历(中左右) 后根遍历 –> 二叉树中的后序遍历(左右中) 作为树的特例,二叉树还有一种特殊的遍历方式:中序遍历(左中右) 宽度优先遍历。 二叉树的三种遍历方式: 先序遍历(中左右) 中序遍历(左中右) 后序遍...
分类:
其他好文 时间:
2015-02-10 13:11:25
阅读次数:
188
广度遍历二叉树,且要分别记录每一层的数据,方法有二。
1.迭代法
设置两个队列,其中一个队列用于存放上一层的节点,另一个队列用于存放下一层的节点。轮番使用。
class Solution {
public:
vector > levelOrder(TreeNode *root) {
queue q1,q2;
vector> result;
if(!root) return...
分类:
其他好文 时间:
2015-02-09 16:03:19
阅读次数:
177
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就 是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在...
分类:
其他好文 时间:
2015-02-09 15:47:49
阅读次数:
198
史上最简明易懂非递归遍历二叉树算法巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo)遍历二叉树的递归函数是体现了算法之美的高妙算法,思路清晰,代码简洁,读之赏心悦目。代码例如以下:程序代码:voidPreOrderTraverse_R(BiTree B...
分类:
编程语言 时间:
2015-02-07 21:31:25
阅读次数:
309
二叉树的链式存储结构是一类重要的数据结构,其形式定义如下:
[cpp] view
plaincopy
//二叉树结点 typedef struct BiTNode{ //数据 char data; //左右孩子指针 struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;
二...
分类:
其他好文 时间:
2015-02-05 11:31:25
阅读次数:
214
如果直接利用二叉树的层序是没有办法构建一个二叉树的,但是如果是完全二叉树应该是可以的
这里层序序列中用-1表示当前节点没有值
构建主要采用了非递归的方法,利用了queue,因为层序的遍历可以通过queue来实现那么自然也可以通过这个方法进行构建
#include
#include
#include
using namespace std;
typedef struct T...
分类:
其他好文 时间:
2015-02-04 16:38:19
阅读次数:
166