您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习之二叉树小结

2007-04-25 18:52 302 查看
在关于数据结构中,运用最多的树莫过于二叉树,当然,也有B树,B+树,红黑树...
虽然种类很多,但是基本的还是二叉查找树。这里我们就二叉树的一些基本特征作一些讨论,
然后给出一些基本的二叉查找树的常用操作代码。

实现二叉树的方法可以是在每个节点除数据外还要有一些指针,使得该节点的每一个儿子都有一个指针
指向它。二叉树的典型声明如下(为了方便起见,二叉数里的元素都是int型):

#include <stdio.h>
#include <stdlib.h>

struct node

typedef struct node* Node;

给一个数据,返回一个二叉树的节点

Node newNode(int data)

下面介绍一些简单的二叉树的操作代码:

int size(Node root)
int maxDepth(Node root)

int minValue(Node root)

Node SearchBST(Node root, int num)

Node SearchBSTNoRec(Node root, int num)

Node Insert(Node root, int num)

Node InsertNoRec(Node root, int num)

Node Delete(Node root, int num)

Node Findmin(Node node)

void DeleteNoRec(Node root, int num)
void preOrderT(Node root)

void preOrderTNoRec(Node root)

void InOrderT(Node root)

void InOrderTNoRec(Node root)
void PostOrderT(Node root)

void PostOrderTNoRec(Node root)
int hasPathSum(Node root, int sum)

void printPaths(Node root)

void printPathsRec(Node node, int path[],len)

void printArray(int path[],int len)

void mirror(Node root)
int sameTree(Node a,Node b)
int countTrees(int numKeys)
int isBST1(Node node)

int isBST2(Node node)

int isBSTUtil(Node node, int min, int max)
...{


if (node==NULL) return true;




//如果这个节点不是在要求的范围之类,则返回false


if (node->data < min || node->data > max)


return false;


else //对左右子树进行递归检查


return (isBSTUtil(node->left,min,node->data)&&


isBSTUtil(node->right,node->data+1,max));


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: