列表、栈或队列都是线性结构,包含一个数据元素序列。而二叉树是一种层次结构。
二叉树可用链接在一起的一个节点集合来描述。每个节点包含一个数据元素,和两个名为left和right的指针,分别为左孩子和右孩子。一节点可以定义为一个类。我们可以用一个变量root来表示树的根节点。如果树空,则root为NULL。
有一种常用的特殊的二叉树,称为二叉搜索树(binary search tree)。一棵二叉搜索树(没有重复数据元素)中,所有节点都满足如下性质:其左子树中任意节点的值都小于此节点的值,右子树中任意节点的值都大于此节点的值。
程序清单 BinaryTree.h
#ifndef BINARYTREE_H
#define BINARYTREE_H
#include <iostream>
using namespace std;
template<typename T>
class TreeNode{
public:
T