链式二叉树
来源:互联网 发布:数据流程图软件 编辑:程序博客网 时间:2024/05/19 02:05
# include <stdio.h># include <stdlib.h># include <malloc.h>struct NODE{char ch;struct NODE *lchild;struct NODE *rchild;};struct NODE *CreateTree(void);bool is_empty(struct NODE *p);int depth(struct NODE *p);bool traverse(struct NODE *p);bool destory(struct NODE *p);void visit(char ch);int main(){struct NODE *root = CreateTree();if ( is_empty(root) )printf("是空树\n");elseprintf("不是空树\n");int depths = depth(root);printf("depth is %d\n", depths);traverse(root);destory(root);return 0;}/* 功能:先序创建二叉树 返回:创建的节点地址 */struct NODE *CreateTree(void){char ch;struct NODE *p = NULL;scanf("%c", &ch);if (' ' == ch){return p;}else{p = (struct NODE *)malloc(sizeof(struct NODE));p->ch = ch;p->lchild = CreateTree();p->rchild = CreateTree();return p;}}/* 功能:判断该二叉树是否为空 返回:true 空; false 非空 */bool is_empty(struct NODE *p){if (p == NULL)return true;elsereturn false;}/* 功能:求二叉树的深度 */int depth(struct NODE *p){int l; //左子树的深度 int r;//右子树的深度if (p == NULL){return 0;}if ( p->lchild ){l = depth(p->lchild); }else{l = 0;}if ( p->rchild ){r = depth(p->rchild);}else{r = 0;}return (l>r) ? (l+1) : (r+1);}/* 功能:先序遍历二叉树 */bool traverse(struct NODE *p){if (!p)return true;traverse(p->lchild);traverse(p->rchild);visit(p->ch);return true;}/* 功能: 销毁二叉树 */ bool destory(struct NODE *p){if (p){if (p->lchild){destory(p->lchild);}if (p->rchild){destory(p->rchild);}free(p);p = NULL;}return true;}void visit(char ch){printf("%c ", ch);}
0 0
- 练习--链式二叉树
- 链式二叉树
- 链式二叉树
- 链式二叉树
- 二叉树链式结构
- 链式二叉树
- 链式二叉树
- 二叉树存储-链式
- 二叉树链式存储
- 链式二叉树
- 链式二叉树
- 链式二叉树
- 链式二叉树
- 二叉树的链式存储
- 链式静态二叉树练习
- 链式二叉树代码示例
- 链式二叉树基本构造
- 链式静态二叉树遍历
- java访问修饰符
- 非常简单的入门git操作
- Git3--工作区和暂存区
- 第99章、Android调用Javascript(从零开始学Android)
- Java变量
- 链式二叉树
- JFrame如何设置背景图片
- c++类的内存分布
- java语言程序设计基础篇第九章编程练习题
- UGUI之Text镜像效果
- 数码管喷码机
- nginx.conf 配置文件说明
- 求同余幂
- java基础知识