数据结构学习之二叉树小结
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));
}
虽然种类很多,但是基本的还是二叉查找树。这里我们就二叉树的一些基本特征作一些讨论,
然后给出一些基本的二叉查找树的常用操作代码。
实现二叉树的方法可以是在每个节点除数据外还要有一些指针,使得该节点的每一个儿子都有一个指针
指向它。二叉树的典型声明如下(为了方便起见,二叉数里的元素都是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));
}
相关文章推荐
- 数据结构学习-(一)二叉树
- 基本数据结构学习总结: 二叉树的遍历
- C语言学习历程(十八) 数据结构二叉树的创建、遍历、深度等算法
- 数据结构学习笔记——二叉树的类型定义
- 【学习点滴-数据结构-二叉树】判断二叉树是否是平衡二叉树
- 数据结构学习之二叉树
- 数据结构学习——计算二叉树的层数&用同一思路计算每层结点个数
- 数据结构学习笔记:二叉树
- 数据结构学习笔记(8)---二叉树的层次遍历
- 数据结构 学习笔记(四):树(上):树的表示,二分查找,二叉树,先中后层次遍历
- 数据结构学习之树(二) 【二叉树】
- 学习《数据结构》有感之新的创建二叉树和新的遍历的方法
- 数据结构学习五:二叉树
- 数据结构学习之二叉树
- 数据结构学习小结(1)-----线性结构-----线性表
- ACM学习历程—广东工业大学2016校赛决赛-网络赛D 二叉树的中序遍历(数据结构)
- 【学习笔记----数据结构10-二叉树】
- 【学习点滴-数据结构-二叉树】和为某一值的二叉树路径~
- 【学习点滴-数据结构-二叉树】二叉树中找大于等于(min+max)/2的节点
- 数据结构学习-二叉树-链式结构、特殊二叉树、性质、遍历、遍历应用