【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【上】

简介: 文章目录一、二叉数的结构体二、构建二叉树,供后续测试使用三、二叉树销毁四、构建节点五、二叉树的高度:1.代码:2.测试结果:二叉树节点个数1.代码:2.测试结果:

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤

📃个人主页 :阿然成长日记 👈点击可跳转

📆 个人专栏: 🔹数据结构与算法🔹C语言进阶

🚩 不能则学,不知则问,耻于问人,决无长进

🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍

文章目录

一、二叉数的结构体

每一个节点有

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.测试结果:

相关文章
|
5天前
|
存储 算法
【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)
【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)
9 0
|
5天前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
10 0
|
5天前
【数据结构】判断二叉树是否是完全二叉树
【数据结构】判断二叉树是否是完全二叉树
12 5
|
5天前
【数据结构】链式二叉树的层序遍历
【数据结构】链式二叉树的层序遍历
14 5
|
5天前
|
存储 测试技术
【数据结构】手把手分析:链式二叉树的实现
【数据结构】手把手分析:链式二叉树的实现
16 5
|
5天前
|
算法 分布式数据库
【数据结构和算法】--- 二叉树(5)--二叉树OJ题
【数据结构和算法】--- 二叉树(5)--二叉树OJ题
9 1
|
6天前
|
算法 API 数据处理
数据结构——二叉树的实现
数据结构——二叉树的实现
11 1
|
6天前
|
算法
【C/数据结构与算法】:二叉树经典OJ
【C/数据结构与算法】:二叉树经典OJ
11 0
【C/数据结构与算法】:二叉树经典OJ
|
13天前
|
存储 算法
【树】数据结构——树和二叉树的概念&笔记
【树】数据结构——树和二叉树的概念&笔记
|
16天前
|
存储
数据结构——二叉树
数据结构——二叉树
11 1