当前位置: 首页 > news >正文

养老院网站建设做图的模板下载网站

养老院网站建设,做图的模板下载网站,建站前期准备,自由室内设计师接单网站实现链式结构的二叉树 实现链式结构的二叉树遍历前序遍历中序遍历后序遍历 节点个数叶子节点个数⼆叉树第k层结点个数⼆叉树的深度/⾼度查找值为X的节点二叉树的销毁 层序遍历判断二叉树是否为完全二叉树 ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。 通常…

实现链式结构的二叉树

    • 实现链式结构的二叉树
      • 遍历
        • 前序遍历
        • 中序遍历
        • 后序遍历
      • 节点个数
      • 叶子节点个数
      • ⼆叉树第k层结点个数
      • ⼆叉树的深度/⾼度
      • 查找值为X的节点
      • 二叉树的销毁
    • 层序遍历
    • 判断二叉树是否为完全二叉树

⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。 通常的⽅法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别⽤来给出该结点左孩⼦和右孩⼦所在的链结点的存储地址 ,

其结构如下:

typedef int BTDataType; // ⼆叉链 
typedef struct BinaryTreeNode 
{ struct BinTreeNode* left; // 指向当前结点左孩⼦ struct BinTreeNode* right; // 指向当前结点右孩⼦ BTDataType val; // 当前结点值域 
}BTNode;

遍历

前中后序遍历

前序遍历

也叫先根遍历

先遍历根节点,再遍历左子树,最后遍历右子树

左右根

image-20250122120904177 image-20250122121456060

A->B->D->NULL->NULL->NULL->C->E->NULL->NULL->F->NULL->NULL

//前序遍历--根左右
void PreOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}printf("%c ", root->data);PreOrder(root->left);PreOrder(root->right);
}
中序遍历

先遍遍历左子树,,再遍历根节点,最后遍历右子树

左根右

image-20250122120908431 image-20250122122358193

NULL->D->NULL->B->NULL->A->NULL->E->NULL->C->NULL->F->NULL

//中序遍历--左根右
void InOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}InOrder(root->left);printf("%c ", root->data);InOrder(root->right);
}
后序遍历

先遍历左子树,再遍历右子树,最后遍历根节点

左右根

image-20250122120912308 image-20250122123010493

NULL->NULL->D->NULL->B->NULL->NULL->E->NULL->NULL->F->C->A

//后序遍历--左右根
void PostOrder(BTNode* root)
{if (root == NULL){printf("NULL ");return;}PostOrder(root->left);PostOrder(root->right);printf("%c ", root->data);
}

节点个数

节点个数 = 1(根节点)+ 左子树节点个数 + 右子树节点个数

// ⼆叉树结点个数 
int BinaryTreeSize(BTNode* root)
{if (root == NULL){return 0;}//节点个数 = 1(根节点)+ 左子树节点个数 + 右子树节点个数return 1 + BinaryTreeSize(root->left) + BinaryTreeSize(root->right);
}

叶子节点个数

叶子节点个数 = 左子树叶子节点个数 + 右子树叶子节点个数

//⼆叉树叶⼦结点个数 
int BinaryTreeLeafSize(BTNode* root)
{if (root == NULL){return 0;}//叶子节点个数 = 左子树叶子节点个数 + 右子树叶子节点个数if (root->left == NULL && root->right == NULL){return 1;}return BinaryTreeLeafSize(root->left) + BinaryTreeLeafSize(root->right);
}

⼆叉树第k层结点个数

当k == 1,直接在当前节点返回,

当k != 1,继续向下一层递归,k-1

//⼆叉树第k层结点个数
int BinaryTreeLevelKSize(BTNode* root, int k)
{if (root == NULL){return 0;}if (k == 1){return 1;}return BinaryTreeLevelKSize(root->left, k - 1) + BinaryTreeLevelKSize(root->right, k - 1);
}

⼆叉树的深度/⾼度

//⼆叉树的深度/⾼度
int BinaryTreeDepth(BTNode* root)
{if (root == 0){return 0;}//高度 = max(左子树,右子树)+ 1return 1 + max(BinaryTreeDepth(root->left), BinaryTreeDepth(root->right));
}

查找值为X的节点

//⼆叉树查找值为x的结点
BTNode* BinaryTreeFind(BTNode* root, BTDataType x)
{if (root == NULL){return NULL;}if (root->data == x){return root;}BTNode* leftFind = BinaryTreeFind(root->left, x);if (leftFind){return leftFind;}BTNode* rightFind = BinaryTreeFind(root->right, x);if (rightFind){return rightFind;}return NULL;
}

二叉树的销毁

使用后序遍历

//⼆叉树销毁
void BinaryTreeDestory(BTNode** root)
{if (*root == NULL){return;}BinaryTreeDestory(&((*root)->left));BinaryTreeDestory(&((*root)->right));free(*root);*root = NULL;
}

层序遍历

按照层次依次遍历(从上到下,从左到右)

广度优先遍历

image-20250218160303782

思路:

使用队列,根节点入队,循环判断队列是否为空,不为空取队头,将队头结点左右孩子入队(非空)

//层序遍历
void LevelOrder(BTNode* root)
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){//取队头,出队,将左右孩子(非空)入队BTNode* top = QueueFront(&q);QueuePop(&q);printf("%c ", top->data);if (top->left){QueuePush(&q,top->left);}if (top->right){QueuePush(&q, top->right);}}QueueDestory(&q);
}

判断二叉树是否为完全二叉树

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

// 判断⼆叉树是否是完全⼆叉树
bool BinaryTreeComplete(BTNode* root)
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){//取队头,出队,将左右孩子(非空)入队BTNode* top = QueueFront(&q);QueuePop(&q);if (top == NULL){break;}//入队QueuePush(&q, top->left);QueuePush(&q, top->right);}//如果存在非空结点,是非完全二叉树while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);QueuePop(&q);if (top != NULL){QueueDestory(&q);return false;}}QueueDestory(&q);return true;
}
http://www.dtcms.com/a/475322.html

相关文章:

  • 杭州比较好的代运营公司电子商务seo实训总结
  • java锁升级简述
  • 网站含中国的备案外贸网站建设公司青岛
  • 图片 网站源码免费企业查询
  • 中国逐日格点降水数据集V2(1960–2024,0.1°)
  • 公司的网址杭州百家号优化
  • 太仓市建设招标网站做网站服务器用国外的
  • 【大数据】用户画像
  • 网站建设风险管理计划永久免费网站空间
  • 网站维护的工作内容微信公众号怎么推广
  • 外贸企业网站网站支付方案的设计
  • 网站建设完成确认书网站建设公司 lnmp
  • 做外贸网站用什么空间成都抢先看新钱新闻全搜索
  • 【自记】MaxCompute 补数据与生产环境数据初始化完整说明
  • java监听邮箱并读取邮箱、邮箱内附件内容
  • 乐平市网站建设网站建设板块
  • 新网站怎样做外链wordpress 文章发布时间
  • 视觉语言模型(如 CLIP 或 BLIP) 和 向量数据库 来构建一个智能审核系统 思路
  • 洛谷P5838 [USACO19DEC] Milk Visits G
  • 南京做网站优化的企业做宣传册的公司
  • 消失模铸造数字化转型-数字化智能制造平台在消失模铸造全过程可追溯的深化案例
  • 淄博学校网站建设方案wordpress子主题安全
  • 网站开发的技术难点专业网站建设常州
  • 网站投票页面怎么做低价网站建设推广优化
  • 宁波网站推广宣传wordpress会员导出
  • 湖南网站推广优化电子商务网站建设运营
  • 城乡建设杂志官方网站seo网站推广优化
  • 兼职做网站挣钱么网站的做用
  • 管理软件开发公司网站内容优化的重要性
  • 对网站策划的看法推动高质量发展发言材料