非线性结构——树
来源:互联网 发布:华为手机网络诊断 编辑:程序博客网 时间:2024/06/05 00:37
二叉树的深度
求解二叉树的深度比较简单,只要分别计算出左、右子树的深度,然后取较大者加1即为二叉树的深度。
直接上代码:
/* * 二叉树的深度 */int PostTreeDepth(BiTree root){int leftheight, rightheight, max;if(root != NULL){leftheight = PostTreeDepth(root->lchild);rightheight = PostTreeDepth(root->rchild);max = leftheight>rightheight?leftheight:rightheight;return (max+1);}else return 0;}之后贴上二叉树的前、中、后序遍历:
#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0#define OVERFLOW -2#define OK 1#define ERROR 0typedef int Status;typedef int TElemType;/* * 存储结构 */typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;/* * 创建二叉树,输入0表示创建空树 */Status CreateBiTree(BiTree *T){ TElemType e; scanf("%d", &e); if (e == 0) { *T = NULL; } else { *T = (BiTree) malloc(sizeof(BiTNode)); if (!T) { exit(OVERFLOW); } (*T)->data = e; CreateBiTree(&(*T)->lchild); //创建左子树 CreateBiTree(&(*T)->rchild); //创建右子树 } return OK;}/* * 访问元素 */void visit(TElemType e){ printf("%d ", e);}/* * 先序遍历二叉树:指先访问根,然后访问孩子的遍历方式 */Status PreOrderTraverse(BiTree T, void (*visit)(TElemType)){ if (T) { visit(T->data); PreOrderTraverse(T->lchild, visit); PreOrderTraverse(T->rchild, visit); }}/* * 中序遍历二叉树:指先访问左(右)孩子,然后访问根,最后访问右(左)孩子的遍历方式 */Status InOrderTraverse(BiTree T, void (*visit)(TElemType)){ if (T) { InOrderTraverse(T->lchild, visit); visit(T->data); InOrderTraverse(T->rchild, visit); }}/* * 后序遍历二叉树:指先访问孩子,然后访问根的遍历方式 */Status PostOrderTraverse(BiTree T, void (*visit)(TElemType)){ if (T) { PostOrderTraverse(T->lchild, visit); PostOrderTraverse(T->rchild, visit); visit(T->data); }}/* * 二叉树的深度 */int PostTreeDepth(BiTree root){int leftheight, rightheight, max;if(root != NULL){leftheight = PostTreeDepth(root->lchild);rightheight = PostTreeDepth(root->rchild);max = leftheight>rightheight?leftheight:rightheight;return (max+1);}else return 0;}int main(){ BiTree T; printf("创建树,输入0为空树:\n"); CreateBiTree(&T); printf("先序遍历:"); PreOrderTraverse(T, *visit); printf("\n中序遍历:"); InOrderTraverse(T, *visit); printf("\n后序遍历:"); PostOrderTraverse(T, *visit); printf("\n树的深度:%d", PostTreeDepth(T)); return 0;}
阅读全文
0 0
- 非线性结构——树
- 非线性结构——图
- [数据结构]非线性结构——多维数组
- 非线性结构之树
- 非线性结构之二叉树
- 非线性数据结构——二叉树
- java数据结构-非线性结构之树
- 数据结构(三):非线性逻辑结构-树
- 【数据结构】非线性结构---树(基本概念)
- 非线性结构-多维数组
- OpenCV——非线性滤波器
- 非线性数据结构——图
- 线性结构与非线性结构
- 线性结构和非线性结构
- 线性结构和非线性结构
- 线性结构和非线性结构
- 线性结构和非线性结构
- 遍历二叉树——非线性数据 到 线性数据
- 利用php生成xml
- Android学习笔记之图像颜色处理(ColorMatrix)
- 鼠标测试工具Simple_Mouse_Test
- ACM 迭代深搜法 Power Calculus
- 用卷积公式求概率密度时确定积分区间
- 非线性结构——树
- poj2763(树链剖分)
- 远程桌面(服务器)的链接步骤
- 大数除法之估商法源码
- 百练OJ:3865和2677:肿瘤检测
- 移动UI设计:基本类型屏幕
- 选择排序算法(node)
- Android okhttp3来进行网络数据请求和发送
- 多进程multiprocessing-进程池Pool