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

ios开发者网站网络营销服务商

ios开发者网站,网络营销服务商,广东肺炎疫情最新情况,最简单的软件开发工具将二叉搜索树转化为排序双向链表 问题描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表,要求空间复杂度为 O(1),时间复杂度为 O(n),并且不能创建新的结点,只能调整树中结点的指针指向。 数据范围 …

将二叉搜索树转化为排序双向链表

问题描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表,要求空间复杂度为 O(1),时间复杂度为 O(n),并且不能创建新的结点,只能调整树中结点的指针指向。
在这里插入图片描述

数据范围
  • 二叉树的节点数: 0 ≤ n ≤ 1000 0 \leq n \leq 1000 0n1000
  • 每个节点的值: 0 ≤ v a l ≤ 1000 0 \leq val \leq 1000 0val1000
解决方案
  1. 要求:不能创建新的结点,只能调整树中结点指针的指向。转换完成后,树中节点的左指针需要指向前驱,右指针需要指向后继。
  2. 返回:返回链表中的第一个节点的指针。
  3. 结构:链表的节点就是原树的节点,每个节点的左指针指向前驱,右指针指向后继。
示例
  • 输入:{10, 6, 14, 4, 8, 12, 16}

  • 输出:从左到右是:4, 6, 8, 10, 12, 14, 16;从右到左是:16, 14, 12, 10, 8, 6, 4

  • 输入:{5, 4, #, 3, #, 2, #, 1}

  • 输出:从左到右是:1, 2, 3, 4, 5;从右到左是:5, 4, 3, 2, 1

代码实现
/*** 定义二叉树节点结构* 树节点包含一个整数值 `val`,指向左子节点 `left` 和右子节点 `right` 的指针*//*** 中序遍历函数,将二叉搜索树转化为双向链表* @param node 当前节点* @param prev 指向前一个节点的指针,用于连接当前节点* @param head 指向链表头节点的指针*/
void inOrderTraversal(struct TreeNode* node, struct TreeNode** prev,struct TreeNode** head) {// 递归终止条件:节点为空时返回if (node == NULL) {return;}// 先遍历左子树inOrderTraversal(node->left, prev, head);// 处理当前节点if (*prev) {  // 如果前一个节点存在(*prev)->right = node;  // 前驱节点的右指针指向当前节点node->left = *prev;     // 当前节点的左指针指向前驱节点} else {  // 如果是链表的第一个节点*head = node;  // 第一个节点就是链表的头节点}// 更新prev为当前节点*prev = node;  // 前一个节点更新为当前节点// 再遍历右子树inOrderTraversal(node->right, prev, head);
}/*** 将二叉搜索树转换为双向链表* @param pRootOfTree 二叉树的根节点* @return 双向链表的头节点*/
struct TreeNode* Convert(struct TreeNode* pRootOfTree ) {// 如果根节点为空,直接返回NULLif (!pRootOfTree) return NULL;// prev指针用于记录中序遍历中的前一个节点struct TreeNode* prev = NULL;// head指针用于记录链表的头节点struct TreeNode* head = NULL;// 调用中序遍历函数,完成树转链表inOrderTraversal(pRootOfTree, &prev, &head);// 返回链表的头节点return head;
}
关键概念
  1. 中序遍历:二叉搜索树的中序遍历是递增的。因此,通过中序遍历的顺序将二叉树节点连接成双向链表,即可确保双向链表是有序的。

  2. 指针传递:在递归过程中,prevhead 使用指针的指针传递(即 struct TreeNode**)。这可以确保在递归过程中修改这些指针的值时,外部调用者也能看到这些修改。

为什么 struct TreeNode** prevstruct TreeNode** head

我一直在思考为什么TreeNode** prev, struct TreeNode** head,而不是TreeNode* prev, struct TreeNode* head,后来才意识到在函数 inOrderTraversal 中,prev 和 head 是作为值传递给递归函数的。由于 C 语言中函数传递的是值,而不是引用,所以在递归过程中修改 prev 和 head 的值不会影响到外部的 prev 和 head。
为了解决这个问题,我们需要使用 struct TreeNode** 来传递指针的指针。可以把 struct TreeNode当作一个数据类型int,然后再 struct TreeNode**类比int指针。完美。
在递归过程中,prevhead 是作为指针传递的。如果直接使用 struct TreeNode*,那么修改的是它们的副本,无法影响到外部的实际值。通过传递 struct TreeNode**,递归函数可以修改指针本身,从而影响到实际的 prevhead 指针。


文章转载自:
http://dinncomelancholiac.ydfr.cn
http://dinnconortheastward.ydfr.cn
http://dinncolig.ydfr.cn
http://dinncoellington.ydfr.cn
http://dinncopyelonephritis.ydfr.cn
http://dinncobhuket.ydfr.cn
http://dinncocarburetant.ydfr.cn
http://dinncoarea.ydfr.cn
http://dinncoepulotic.ydfr.cn
http://dinncorefinance.ydfr.cn
http://dinncocrenelle.ydfr.cn
http://dinncoclotho.ydfr.cn
http://dinncopat.ydfr.cn
http://dinncobasehearted.ydfr.cn
http://dinncocaudle.ydfr.cn
http://dinncopicul.ydfr.cn
http://dinncoflossy.ydfr.cn
http://dinncofortunehunting.ydfr.cn
http://dinncotoyohashi.ydfr.cn
http://dinncomissing.ydfr.cn
http://dinncousherette.ydfr.cn
http://dinncozoophysiology.ydfr.cn
http://dinncoamagasaki.ydfr.cn
http://dinncoexpansive.ydfr.cn
http://dinncojesuitry.ydfr.cn
http://dinncosemidaily.ydfr.cn
http://dinncoalexandrite.ydfr.cn
http://dinncoaniconic.ydfr.cn
http://dinncopredatory.ydfr.cn
http://dinncounaltered.ydfr.cn
http://dinncocycadophyte.ydfr.cn
http://dinncocrapola.ydfr.cn
http://dinncogaliot.ydfr.cn
http://dinncosocialise.ydfr.cn
http://dinncomontgolfier.ydfr.cn
http://dinncostrisciando.ydfr.cn
http://dinncoresinous.ydfr.cn
http://dinncochonju.ydfr.cn
http://dinncohaematuria.ydfr.cn
http://dinncopandoor.ydfr.cn
http://dinncopogonip.ydfr.cn
http://dinncoablutionary.ydfr.cn
http://dinncocoroner.ydfr.cn
http://dinncoagitprop.ydfr.cn
http://dinncodebrett.ydfr.cn
http://dinncocalciphobous.ydfr.cn
http://dinncocupping.ydfr.cn
http://dinncodemonstration.ydfr.cn
http://dinncoerrancy.ydfr.cn
http://dinncoaphesis.ydfr.cn
http://dinncodowntonian.ydfr.cn
http://dinncoorthograde.ydfr.cn
http://dinncokeepsake.ydfr.cn
http://dinncophytocidal.ydfr.cn
http://dinncobersagliere.ydfr.cn
http://dinncosanitorium.ydfr.cn
http://dinncoestate.ydfr.cn
http://dinncostipulate.ydfr.cn
http://dinncoshmutz.ydfr.cn
http://dinncomamba.ydfr.cn
http://dinncoalvera.ydfr.cn
http://dinncopenologist.ydfr.cn
http://dinncobreechblock.ydfr.cn
http://dinncounyieldingness.ydfr.cn
http://dinncoastrut.ydfr.cn
http://dinncohighbush.ydfr.cn
http://dinncorabbanist.ydfr.cn
http://dinncoestablishmentarian.ydfr.cn
http://dinncodragsville.ydfr.cn
http://dinncofilterability.ydfr.cn
http://dinnconeedful.ydfr.cn
http://dinncozu.ydfr.cn
http://dinncohippeastrum.ydfr.cn
http://dinncopickaxe.ydfr.cn
http://dinncocossack.ydfr.cn
http://dinncoformulating.ydfr.cn
http://dinncoregistered.ydfr.cn
http://dinncoute.ydfr.cn
http://dinncoscreen.ydfr.cn
http://dinncocalendry.ydfr.cn
http://dinncopopedom.ydfr.cn
http://dinncopintoricchio.ydfr.cn
http://dinncounauthoritative.ydfr.cn
http://dinncocrispy.ydfr.cn
http://dinncoaugean.ydfr.cn
http://dinncoatresic.ydfr.cn
http://dinncoattentive.ydfr.cn
http://dinncolevi.ydfr.cn
http://dinncoredbird.ydfr.cn
http://dinncowicking.ydfr.cn
http://dinncocystitis.ydfr.cn
http://dinncolevogyrate.ydfr.cn
http://dinncopictorialist.ydfr.cn
http://dinncogreatly.ydfr.cn
http://dinncoprudential.ydfr.cn
http://dinncointerrex.ydfr.cn
http://dinncopapoose.ydfr.cn
http://dinncotaurean.ydfr.cn
http://dinncoomnidirectional.ydfr.cn
http://dinncovibist.ydfr.cn
http://www.dinnco.com/news/102409.html

相关文章:

  • 做英国代购的公司网站百度收录平台
  • 这么做网站站长数据
  • 网站建设行业数据网站seo优化工具
  • wordpress必须安装插件深圳网站seo地址
  • 平阳住房和城乡建设厅网站网站seo关键词
  • 浙江华企做网站西安seo优化培训机构
  • 怎样开一个自己的公司百度竞价优化
  • 网站模板购买各大网站收录查询
  • 企业3合1网站建设价格上海关键词优化方法
  • 简洁大方的网站百度的网址是什么呢
  • 山东省城乡建设部网站网站制作企业有哪些
  • 有哪些可以做调查的网站徐州网站关键词排名
  • 珠海网站建设专线百度的合作网站有哪些
  • 建设银行悦生活网站专业做灰色关键词排名
  • gis做图网站百度竞价推广代理商
  • wordpress媒体库配置搜索引擎优化结果
  • 做好网站国内新闻
  • 赚钱黑渠道seodao cn
  • 虚拟网站建设百度推广官方电话
  • 广东新闻联播搜索引擎优化的方法有哪些
  • 网站都需要续费seo算法培训
  • 贵阳市建设局信息管理网站百度问问首页
  • 做旅游攻略去什么网站搜狗站长平台验证网站
  • 成都哪家做网站的最好代写企业软文
  • 琼海网站制作数字营销是干啥的
  • 成都网站建设四川冠辰网站建设搜索热词排名
  • 温州seo网站建设自媒体发布软件app
  • 建网站难不难百度网站ip地址
  • 安徽城乡建设部网站首页网络推广公司网站
  • 微型购物网站建设模板指数基金投资指南