盐城做百度网站,电商门户网站,市妇联门户网站平台建设情况,四川销售应用app那么本篇文是初阶数据结构这个系列的最后一篇文章#xff0c;那么闲话少叙#xff0c;我们直接进入正题 在讲二叉树的一些之前知识点之前#xff0c;我先给大家送个小礼物哈
手搓二叉树 typedef int BTDataType ; typedef struct BinaryTreeNode { BTDataType _data …那么本篇文是初阶数据结构这个系列的最后一篇文章那么闲话少叙我们直接进入正题 在讲二叉树的一些之前知识点之前我先给大家送个小礼物哈
手搓二叉树 typedef int BTDataType ; typedef struct BinaryTreeNode { BTDataType _data ; struct BinaryTreeNode * _left ; struct BinaryTreeNode * _right ; } BTNode ; BTNode * CreatBinaryTree () { BTNode * node1 BuyNode ( 1 ); BTNode * node2 BuyNode ( 2 ); BTNode * node3 BuyNode ( 3 ); BTNode * node4 BuyNode ( 4 ); BTNode * node5 BuyNode ( 5 ); BTNode * node6 BuyNode ( 6 ); node1 - _left node2 ; node1 - _right node4 ; node2 - _left node3 ; node4 - _left node5 ; node4 - _right node6 ; return node1 ; } 手搓二叉树的思路 首先创建一个结构体且结构体里的元素也是需要自己设置就拿链表来举例结构体内必须包含数据以及指向下一个节点的指针next,那么返回到二叉树这里结构体需要包含的就是数据以及左右指针然后创建子节点以及子节点之间相互连接 前序遍历 那么我们可以先从这个图中得到一个结论 前序遍历根 左子树 右子树 这里我也是给大家准备了一个小视频大家可以参考一下 二叉树前序遍历思路讲解 源代码 void FrontOrder(TFT* node) { if (node NULL) { printf(N ); return; } printf(%d , node-data); FrontOrder(node-left); FrontOrder(node-right); } 中序遍历 我们先来说一下结论 中序遍历左子树 根 右子树 这里的操作我也给大家准备了 一个小视频大家可以参考一下 二叉树中序遍历思路讲解 源代码 void MiddleOrder(TFT* node) { if (node NULL) { printf(N ); return; } MiddleOrder(node-left); printf(%d , node-data); MiddleOrder(node-right); } 后序遍历 还是一样我们先讲结论 后序遍历左子树 右子树 根 这里的操作我也给大家准备了 一个小视频大家可以参考一下 二叉树的后序遍历 源代码 void BehindOrder(TFT* node) { if (node NULL) { printf(N ); return; } BehindOrder(node-left); BehindOrder(node-right); printf(%d , node-data); } 前中后序的共同特点 通过递归的方法进行遍历 节点计数 思路当节点不为空时计数器1节点为空时计数器0然后用递归进行遍历 源代码 int TreeSize(TFT* root) { /*int size 0;*/ if (root NULL) return 0; else size; TreeSize(root-left); TreeSize(root-right); return size; } 计算树的高度 思路进入函数后先判空如果为空则返回0不为空时先记录当前左右两科树的高点然后进行左右判断谁大谁加1 源代码 int TreeHighSize(TFT* node) { if (node NULL) return 0; int left TreeHighSize(node-left); int right TreeHighSize(node-right); return left right ? left 1 : right 1; } 树的销毁 树的销毁其实不难基本上就是还原变量指针等等 源代码 void DestroyTree(TFT* node) { if (node NULL) return; DestroyTree(node-left); DestroyTree(node-right); free(node); } 那么初阶数据结构系列的文章就先给大家更新到这里如果喜欢我的文章还请各位观众老爷们留个赞谢谢我们下期再见