二叉树的查找、二叉树高度、二叉树获得双亲结点、构造二叉树、二叉树的广义表表示法、二叉树的插入删除、二叉树的非递归实现

二叉树的查找:

#include<iostream>
#include"DoubleNode.h"     //双链表结点类
#include"SeqStack.h"           //顺序栈
#include"LinkedStack.h"       //链式栈
#include"SeqQueue.h"          //顺序循环队列
using namespace std;




template <class T>
class BinaryTree    // 二叉树类
{
public:
DoubleNode<T> *root;  //指向根结点
BinaryTree();   //构造空二叉树
BinaryTree(T prelist [],int n);  //标明空子树的先根序列构造一棵二叉树
BinaryTree(T prelist [],T inlist [],int n);  //先根和中根序列构造二叉树
~BinaryTree();


bool IsEmpty();  //判断是否是空二叉树
int Count();   //返回结点个数
int Height();   //返回二叉树的高度
DoubleNode<T> *Search(T value); //查找首次出现值为value的结点
DoubleNode<T> *GetParent(DoubleNode<T> *node);  //返回node结点的双亲结点
void preRoot();  //先根次序遍历二叉树
void midRoot();  //中根次序遍历二叉树
void postRoot();  //后根次序遍历二叉树
DoubleNode<T> *Insert(DoubleNode<T> *p, T value,bool priorChild = true);//插入value作为P结点的孩子
void Remove(DoubleNode<T> * p,bool priorChild = true);  //删除p结点的左或右子树
void PrintGList();  //以广义表输出二叉树
void preRootTraverse();  // 先根次序遍历二叉树的非递归算法
void midRootTraverse();  // 中根次序遍历二叉树的非递归算法
void LevelOrder();  //按层次遍历二叉树




private:
void Destroy (DoubleNode<T> *p);  //撤销二叉树
int Count(DoubleNode<T> *p);  //返回以P结点为根的子树结点个数
int Height(DoubleNode<T> *p);  //返回以P结点为根的子树结点的高度
DoubleNode<T>*Search (DoubleNode<T> *p, T value);  //在以p为根的子树中查找首次出现的值为value的结点


DoublenNode<T> *GetParent (DoubleNode<T> *p, DoubleNode<T> *node);  // p为根的子树中查找并返回首次出现的值为value的结点
void preRoot(DoubleNode<T> *p);  //先跟次序遍历以p结点为根的子树
void midtRoot(DoubleNode<T> *p);  //中根次序遍历以p结点为根的子树
void postRoot(DoubleNode<T> *p);  //后根次序遍历以P结点为根的子树
DoubleNode<T> *creat(T prelist[],int n,int &i);   //以标明空子树的先根遍历序列创建子树
DoubleNode<T> *creat(T prelist[],T inlist[],int preStart, int inStart,int n); //以先根和中根序列创建一棵子树
void PrintGList (DoubleNode<T> *p);  //以广义表表示输出以p结点为根的子树
};


template <class T>
BinaryTree<T>::BinaryTree()  //构造空二叉树
{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值