求二叉树深度和copy二叉树
2015-07-18 22:02
351 查看
// operatorTree.cpp // 对树的操作 #include <iostream> #include <cstdio> // 二叉树表示法 typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; // 中序遍历 void inOrder(BiTNode *T) { if (T == NULL) { return; } inOrder(T->lchild); printf("%d ", T->data); inOrder(T->rchild); } // 计算树的高度 int depthTree(BiTNode *T) { if (!T) { return 0; } int depthVal = 0; int depthLeft = 0, depthRight = 0; depthLeft = depthTree(T->lchild); depthRight = depthTree(T->rchild); depthVal = 1 + (depthLeft > depthRight ? depthLeft : depthRight); return depthVal; } // copy二叉树 BiTNode* copyTree(BiTNode *T) { if (T == NULL) { return NULL; } BiTNode *newNode = (BiTNode *)malloc(sizeof(BiTNode)); if (newNode == NULL) { free(newNode); return NULL; } newNode->data = T->data; newNode->lchild = copyTree(T->lchild); newNode->rchild = copyTree(T->rchild); return newNode; } void operatorTree() { BiTNode nodeA, nodeB, nodeC, nodeD, nodeE; memset(&nodeA, 0, sizeof(BiTNode)); memset(&nodeB, 0, sizeof(BiTNode)); memset(&nodeC, 0, sizeof(BiTNode)); memset(&nodeD, 0, sizeof(BiTNode)); memset(&nodeE, 0, sizeof(BiTNode)); nodeA.data = 1; nodeB.data = 2; nodeC.data = 3; nodeD.data = 4; nodeE.data = 5; nodeA.lchild = &nodeB; nodeA.rchild = &nodeC; nodeB.lchild = &nodeD; nodeC.lchild = &nodeE; int depth = depthTree(&nodeA); printf("Depth: %d\n", depth); // Depth: 3 BiTNode *newTree = NULL; newTree = copyTree(&nodeA); printf("inorder traversal new tree.\n"); inOrder(&nodeA); // 4 2 1 5 3 printf("\n"); } int main() { operatorTree(); return 0; }
相关文章推荐
- Linux通配符
- Block的copy时机
- log4j:WARN Please initialize the log4j system properly解决办法
- top 25 论文
- Linux编程常用头文件汇总
- OpenGL_ES 创建一个平面 绘制纹理 响应输入事件
- 在Ubuntu(linux)下Eclipse中配置C/C++标准库
- 1. GDAL与OpenCV2.X数据转换(适合多光谱和高光谱等多通道的遥感影像)
- shell脚本-添加用户(非交互式)
- 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
- linux下软链接和硬链接的区别
- tomcat改命令窗口标题的方法
- apt包管理学习记录
- linux 设置pip 镜像 Pip Warning:–trusted-host 问题解决方案
- Linux常用命令之mkdir/cp
- Linux下的软件安装
- Linux下的软件安装
- hadoop问题1
- Apache服务器的安装
- Ubuntu 14.04: install OpenCV with CUDA