1. 二叉树的定义
后续更新
2.二叉树的性质
后续更新
3.二叉树的存储结构
- 顺序存储结构。顺序存储结构使用一组地址连续的存储单元来存储数据元素,为了能够在存储结构中反映出结点之间的逻辑关系,必须将二叉树中的结点依照一定的规律安排在这组单元中。
- 链式存储结构设计不同的结点结构可构成不同形式的链式存储结构。由二叉树的定义得知,二叉树的结点由一个数据元素和分别指向其左、 右子树的两个分支构成,则表示二叉树的链表
中的结点至少包含 3 个域:数据域和左、 右指针域。
注意:本文对于二叉树采用链式存储结构实现。(C++)
4. 代码
binary_tree.h
实现二叉树的各种操作
#ifndef BINARY_TREE_H
#define BINARY_TREE_H
#include <iostream>
#include <vector>
#include <array>
using std::vector;
using std::array;
using std::cout;
using std::endl;
using std::cin;
using std::cerr;
template <typename T>
struct BitNode {
/* data */
T data;
BitNode* lchild;
BitNode* rchild;
BitNode(T data) : data(data), lchild(nullptr), rchild(nullptr) {
};
};
template <typename T>
class BinaryTree {
private:
int count;
void PreOrderTraverse(BitNode<T>* node,void (*visit)(T));//用于先序遍历二叉树
void MidOrderTraverse(BitNode<T>* node,void (*visit)(T)); //用于中序遍历二叉树
void EndOrderTraverse(BitNode<T>* node,void (*visit)(T)); //用于后序遍历二叉树
void LevelOrderTraverse(void (*visit)(T));//用于层序遍历二叉树
void PreOrderTraverseStack(void (*visit)(T)); //用栈先序遍历二叉树
void MidOrderTraverseStack(void (*visit)(T)); //用栈中序遍历二叉树
public:
BitNode<T>* root;
BinaryTree() : root(nullptr),count(0){
};