二叉树的函数声明

Posted 小潘的CS学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的函数声明相关的知识,希望对你有一定的参考价值。

前面我们介绍了二叉树的一些性质,在此我们开始实现二叉树的一些函数.跟之前一样,我们还是从函数声明开始(status.h 头文件和 bitree 头文件):

#pragma once
/*对一些基本状态值的定义*/#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1 //表示不可行#define OVERFLOW -2 //表示缓冲区溢出的状态#define CHARMAX 0x7f
typedef int Status; //Status的类型为int 表示某种状态typedef char ElemType; //元素的类型为char


#pragma once#include "status.h"#include <stdlib.h>#include <stdio.h>
typedef struct BiTreeNode { ElemType data; struct BiTreeNode* lchild; struct BiTreeNode* rchild;}BiTreeNode, * BiTree;
BiTree AskNode(ElemType data); //申请结点的函数void PreOrderCreate_str(BiTree& root, const char*& str); //以字符串形式先序创立二叉树void PreOrderCreate_input(BiTree& root); //以输入的形式先序创立二叉树void PreOrderTraverse(BiTree root); //先序遍历二叉树void InOrderTraverse(BiTree root); //中序遍历二叉树void PostOrderTraverse(BiTree root); //后序遍历二叉树void InOrderTraverse_norecur(BiTree root); //非递归中序遍历二叉树int NodeNums(BiTree root); //计算二叉树的结点数int Depth(BiTree root); //求二叉树的深度

与顺序结构不同,二叉链表形式表示的二叉树有两个指针域,分别指向该结点的左子树和右子树(或者称左孩子和右孩子),另外还有一个数据存储,在此我们设为char类型.二叉树的操作基本是以递归函数的形式编写的,有关递归可以参考.递归需要注意的是,一定要有出口,即当函数满足某个条件后就不再调用自身从而逐级返回完成操作即可.因为递归函数执行时会大量操作栈空间,所以递归的空间损耗十分巨大.当出现死递归时,函数会占用大部分内存,因此在编写时需要注意.

以上是关于二叉树的函数声明的主要内容,如果未能解决你的问题,请参考以下文章

请问如何用随机函数生成二叉树,并遍历?

python代码实现二叉树的镜像树

二叉树的四种遍历方式

这是插入/创建二叉树的代码吗?但是 display() 函数没有显示任何东西?我错过了啥?

已知一颗二叉链表表示二叉树T ,编写函数,判断T是不是为完全二叉树。先

树与二叉树的转换与遍历