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

北京会所网站推广pc端软件开发

北京会所网站推广,pc端软件开发,做公众号排版的网站,网站制作切图前言:我们前面已经了解了二叉树的一些概念,那么我们今天就来了解下二叉树的遍历实现和一些性质。 二叉树的遍历方式有三种:前序,中序,后序。 前序:先根节点,再左子树,最后右子树。 中…

前言:我们前面已经了解了二叉树的一些概念,那么我们今天就来了解下二叉树的遍历实现和一些性质。

在这里插入图片描述

二叉树的遍历方式有三种:前序中序后序

前序:先根节点,再左子树,最后右子树。
中序:先左子树,再根节点,最后右子树。
后序:先左子树,再右子树,最后根节点。

前序遍历:

void PrevOrder(TreeNode* root)
{if (root == NULL){printf("N ");return;}printf("%d ", root->data);PrevOrder(root->left);PrevOrder(root->right);
}

如果我们的根节点为空就返回空,不为空就递归左子树,如果左子树为空就返回递归访问右子树。

中序遍历:

void InOrder(TreeNode* root)
{if (root == NULL){printf("N");return;}InOrder(root->left);printf("%d ", root->data);InOrder(root->right);
}

先访问遍历左子树,再根节点,最后在访问右子树。

后序遍历:

void Tailorder(TreeNode* root)
{if (root == NULL){printf("N");return;}Tailorder(root->left);Tailorder(root->right);printf("%d", root->data);
}

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

求二叉树节点个数:

int TreeSize(TreeNode* root)
{return root == NULL ? 0 :TreeSize(root->left) +TreeSize(root->right) + 1;
}

我们递归实现,左子树的节点个数加上右子树的节点个数再加上根节点的个数就是节点的总个数。
在这里插入图片描述

求叶子结点的个数:

int TreeLeafSize(TreeNode* root)
{// 空 返回0if (root == NULL)return 0;// 不是空,是叶子 返回1if (root->left == NULL&& root->right == NULL)return 1;// 不是空 也不是叶子  分治=左右子树叶子之和return TreeLeafSize(root->left) +TreeLeafSize(root->right);
}

求二叉树的高度:

int TreeHeight(TreeNode* root)
{if (root == NULL)return 0;int leftHeight = TreeHeight(root->left);int rightHeight = TreeHeight(root->right);return leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;
}

因为我们的递归结合上三目操作符会使得非常的复杂,所以我们用一个数据来保存左右子树的高度,我们的二叉树的高度为左右子树较高的那个子树加上1,所以我们返回的是左右子树高度更高的再加上1就是二叉树的高度。

我们的代码还可以进行改进,我们C语言的fmax函数:该函数的作用是比较两个数得到较大的那一个数

int TreeHeight(TreeNode* root)
{if (root == NULL)return 0;return fmax(TreeHeight(root->left), TreeHeight(root->right)) + 1;
}

求二叉树第k层节点个数:

int TreeLevelK(TreeNode* root, int k)
{assert(k > 0);if (root == NULL)return 0;if (k == 1)return 1;return TreeLevelK(root->left, k - 1)+ TreeLevelK(root->right, k - 1);
}

第k层的节点等于第k-1层的节点数相加。
在这里插入图片描述
现在我们要求第三层的节点数,相当于我们返回它的第二层,而我们的第二层节点数要返回我们的第一层节点数,我们的左子树返回一个节点,右子树返回两个节点,所以就是三个节点。

如果对大家有所帮助的话就支持一下吧!

http://www.yayakq.cn/news/722278/

相关文章:

  • 顺企网怎么样昆明seo关键字推广
  • 阿里国际网站做免费有用吗做推广比较好的网站
  • 做网站开封ftp客户端软件
  • 湖南seo网站开发wordpress主体怎么用
  • 哈尔滨 做网站公司哪家好网站开发前端课程
  • 做网站是那个语言写的北京网络营销的培训课程
  • 彩票网站建设古大学建筑设计有哪些专业
  • 门户网站的建设和管理情况自查微信小程序官网登录
  • 做羞羞的事的视频网站域名续费哪里便宜
  • 微信上如何做网站网站商城系统建设方案
  • 网站风格和功能设计方案肇庆专业网站建设公司
  • 网站开发技术架构教育培训机构管理系统
  • wordpress json ld泉州seo网站管理
  • 国家建设部网站杭州网站优化体验
  • 做暖暖欧美网站网站开发有什么软件有哪些
  • 普宁17网站一起做淘宝在线外链推广
  • 做网站公司联系方式页面做手机网站哪家好
  • qq免费注册网站微信推广网站
  • 可以做闪图的网站域名卖给别人有风险吗
  • 达州做网站的公司有哪些经典手机网站
  • 二级网站建设方案 试行投票链接制作哪家服务好
  • 有啥网站是专做时尚穿搭wordpress 清爽主题
  • 深圳自建网站做外贸无法登录国外网站怎么办
  • 平台网站建设多少钱旅游论坛网站建设
  • 平台网站建设调研报告app开发的流程
  • 摄像机怎么在自己家网站做直播网站链接 动态图怎么做
  • 新站seo优化快速上排名网站建设电话销售的话术
  • 淄博高效网站建设找哪家外贸进口流程
  • 网站名称填写什么广州互联网营销师
  • 数据线东莞网站建设技术支持两学一做注册网站吗