二叉树是数据结构中的经典结构,也是应用很广泛的结构之一。二叉树具有一些特定的性质,如 n0 = n2+1,在一些应用中,常常要求在树中查找具有某些特征的节点,或者对树中节点进行处理,即遍历二叉树的问题,其递归算法非常容易实现,非递归算法也有两种思路,本文将在程序中实现笔者认为容易识记的一种方法。
输入序列二叉树:
程序实现:
#include <iostream>
#include <stack>
using std::cin;
using std::cout;
using std::endl;
using std::stack;
// 定义二叉树结构, BiTree 为指针类型
typedef struct BiTreeNode{
int data;
struct BiTreeNode *lchild,*rchild;
}BiTreeNode,*BiTree;
// &T 必须,可以试试去掉的后果
// 输入为先序序列的顺序,如图 输入序列为: 1 2 0 0 3 4 6 0 0 7 0 0 5 0 8 0 0
// 0 - 表示 NULL,这里为了测试而设置的
BiTree