💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 :阿然成长日记 👈点击可跳转
🚩 不能则学,不知则问,耻于问人,决无长进
🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍
文章目录
一、二叉数的结构体
每一个节点有
1.数据域
_data
;2.指向左子树的指针:
_left
3.指向右子树的执指针:
_right
typedef char BTDataType; typedef struct BinaryTreeNode { BTDataType _data; struct BinaryTreeNode* _left; struct BinaryTreeNode* _right; }BTNode;
二、构建二叉树,供后续测试使用
三、二叉树销毁
// 二叉树销毁 void BinaryTreeDestory(BTNode* root) { if (root == NULL) { return; } BinaryTreeDestory(root->_left); BinaryTreeDestory(root->_right); free(root); }
四、构建节点
//构建节点 BTNode* BuyNode(int x) { BTNode* node = (BTNode*)malloc(sizeof(BTNode)); if (node == NULL) { perror("malloc fail"); exit(-1); } node->_data = x; node->_left = NULL; node->_right = NULL; return node; }
五、二叉树的高度:
fmax
函数的头文件:<math.h>
思路:每次选择左右子树中大的那一棵树,对其+1;
1.代码:
//树的高度 int TreeHeight(BTNode* root) { if (root == NULL) return 0; return fmax(TreeHeight(root->_left), TreeHeight(root->_right)) + 1; }
2.测试结果:
二叉树节点个数
思路:如果当前节点为NULL;则返回0;如果不是NULL;则向左右子树递归并+1;
1.代码:
// 二叉树节点个数 int BinaryTreeSize(BTNode* root) { return root == NULL ? 0 : BinaryTreeSize(root->_left) + BinaryTreeSize(root->_right) + 1; }
2.测试结果: