数据结构--二叉树(链表)基本操作
2011-12-05 14:10
507 查看
#include "StdAfx.h" #include <stdio.h> #include <stdlib.h> typedef struct tree{ int key; struct tree *left; struct tree *right; }*BiTree,Node; //循环创建二叉树 void CreateBiTree(BiTree &T)/*DEVC++无法编译此句话,需要从vs中运行*/ { int word; scanf("%d",&word); if(word==-1)//-1表示该节点下面没有左右孩子 { T=NULL; } else { //生成当前的根节点 Node *p=(Node *) malloc (sizeof(Node));//开辟新的节点 T=p; T->key=word; CreateBiTree(T->left);//递归建立左子树 CreateBiTree(T->right); //递归建立右子树 } } //先序遍历以T为根的二叉树 void PreOrder(BiTree &T) { if(T)//T不为空或者根时 { printf("%d ",T->key);//打印当前节点 PreOrder(T->left); PreOrder(T->right); } } void InOrder(BiTree &T) { if(T) { InOrder(T->left); printf("%d ",T->key); InOrder(T->right); } } void PostOrder(BiTree &T) { if(T) { PostOrder(T->left); PostOrder(T->right); printf("%d ",T->key); } } // 先序遍历二叉树,以 count 返回二叉树中叶子结点的数目 void CountLeaf(BiTree &T, int &count){ if (T) { if ((!T->left)&& (!T->right)) count++; // 对叶子结点计数 CountLeaf( T->left, count); CountLeaf( T->right, count); } // if } // CountLeaf // T指向二叉树的根,level 为 T 所指结点所在层次, // 其初值为1,depth 为当前求得的最大层次,其初值为0 void BiTreeDepth(BiTree T, int level, int &depth){ if (T){ if (level>depth) depth=level; BiTreeDepth(T->left, level+1, depth); BiTreeDepth(T->right, level+1, depth); } } int main(int argc, char *argv[]) { BiTree T; printf("请依次输入1,2,-1,3,4,-1,-1,-1,5,-1,6,-1,-1\n"); CreateBiTree(T); printf("先序遍历的顺序是\n"); PreOrder(T); printf("\n中序遍历的顺序是\n"); InOrder(T); printf("\n后序遍历的顺序是\n"); PostOrder(T); int count=0; CountLeaf(T,count); printf("\n叶子节点的数量是:%d\n",count); int depth = 0; BiTreeDepth(T,1,depth); printf("此二叉树深度:%d\n",depth); system("PAUSE"); return 0; }
相关文章推荐
- 数据结构学习笔记(二) 链表之带表头结点的单循环链表基本操作
- 【数据结构】 链表的19种基本操作(完整版)
- 使用C++链表来实现二叉树的存储和基本操作
- 《数据结构》进行曲--带头结点的单循环链表的基本操作
- 数据结构 链表的基本操作
- 数据结构_二叉树的基本操作
- 【 数据结构】实现二叉树以及其基本操作
- 算法与数据结构-二叉树的基本操作C语言实现
- 数据结构之链表定义及基本操作实现
- C语言数据结构 双向链表的建立与基本操作
- 数据结构-实现单链表基本操作
- 数据结构学习笔记(二) 链表之单链表的基本操作
- 从c小白开始自学数据结构——第三天【链表的基本操作】
- C语言(数据结构) - 双向链表的基本操作
- 数据结构链表基本操作
- 【数据结构】链表的基本操作
- c/c++ 数据结构-线性表(单链表基本操作的实现)
- 基本数据结构学习总结: 二叉树的基本操作
- 数据结构高分笔记 算法2-8~2-11:链表的基本操作
- 数据结构-顺序表和链表的基本操作