前言:

二叉树刷题是有固定思维的,请移步

README】二叉树刷题框架

线索二叉树

题目

点击跳转:牛客

思路

此题本质就是二叉树的线索化,所谓二叉树的线索化就是不借用栈通过指针的指向来完成二叉树的非递归遍历

所以此题中要求的双向链表本质就是指针的链接,而且它要求的是排好序的双向链表,而我们知道二叉搜索树的中序遍历就是顺序的,所以可以进行中序线索化

过程也非常简单,只需要创建一个前驱指针prev,再每次进行递归之前,把当前结点rootleft指向prev,同时把prev(不空)的right指向root

/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {public:void Link(TreeNode* root,TreeNode*& prev){if(root==NULL)return;Link(root->left,prev);root->left=prev;if(prev)prev->right=root;prev=root;Link(root->right,prev);}TreeNode* Convert(TreeNode* pRootOfTree) {if(pRootOfTree==NULL)return NULL;TreeNode* prev=NULL;Link(pRootOfTree,prev);TreeNode* head=pRootOfTree;while(head->left)head=head->left;return head;}
};

二叉树经典题之线索二叉树(中序)相关推荐

  1. 二叉树经典题之根据二叉树创建字符串(二叉树的括号表示法)

    前言: 二叉树刷题是有固定思维的,请移步 README]二叉树刷题框架 根据二叉树创建字符串 题目 点击跳转:LeetCode 递归解法 这道题其实考察到的是二叉树的括号表示法,括号表示法依靠括号的划 ...

  2. 二叉树经典题之将二叉树分层打印

    前言: 二叉树刷题是有固定思维的,请移步 README]二叉树刷题框架 文章目录 前言: 二叉树的层序遍历 思路一:两个队列 分析: 代码 思路二:变量控制 二叉树的层序遍历 题目 点击跳转:Leet ...

  3. 二叉树经典题之从前序和中序遍历构建二叉树

    前言: 二叉树刷题是有固定思维的,请移步 README]二叉树刷题框架 文章目录 前言: 从前序和中序遍历构建二叉树 思路 代码 注意 从中序和后序遍历构建二叉树 思路 代码 从前序和中序遍历构建二叉 ...

  4. [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]

    [问题描述][中等] 根据一棵树的前序遍历与中序遍历构造二叉树.注意: 你可以假设树中没有重复的元素.例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = ...

  5. 先序abdfcegh 中序bfdagehc 后序线索二叉树_二叉树的遍历和线索二叉树

    二叉树的遍历是指按某条搜索路径访问树中的每个结点,使得每个结点均被访问一次,且只被访问一次. 先序遍历(NLR) 若二叉树为空,则什么也不做:否则, (1)访问根结点. (2)先序遍历左子树. (3) ...

  6. [湖南大学程序设计实训训练作业一]9.二叉树遍历,从前序、中序到后序(二叉树呀,面试必考哦!)

    9.二叉树遍历,从前序.中序到后序 [写在前面]---补充知识 [问题描述] [输入形式] [输出形式] [样例输入] [样例输出] 题解 思路 代码 [写在前面]-补充知识 之前写过剑指offer, ...

  7. 二叉树的遍历(前序、中序、后序、已知前中序求后序、已知中后序求前序)

    二叉树的遍历(前序.中序.后序.已知前中序求后序.已知中后序求前序)   之前的一篇随笔(二叉树.前序遍历.中序遍历.后序遍历)只对二叉树的遍历进行了笼统的描述,这篇随笔重点对前.中.后序的遍历顺序进 ...

  8. python实现二叉树遍历(前序遍历、中序遍历、后序遍历)

    python实现二叉树遍历(前序遍历.中序遍历.后序遍历) 在计算机科学中,二叉树是一种树数据结构,其中每个节点最多有两个子节点,称为左子节点和右子节点.使用集合理论概念的递归定义是(非空)二叉树是元 ...

  9. 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)

    手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...

最新文章

  1. python测试用例管理工具_三款开源测试管理工具推荐
  2. php随机数字不重复使等式成立_php随机数不重复生成的五种方式
  3. mac mysql my.cnf_mac 增加 my.cnf
  4. ApacheCN 捐赠名单 2018
  5. 通过驱动向Excle中写入数据
  6. PHP技术的优缺点(转载)
  7. 华为5g鸿蒙麒麟,华为5G亮王牌:鸿蒙系统+7800W+麒麟990+防水,钱包按耐不住!
  8. Elasticsearch mysql 增量同步
  9. mysql导出数据库视频教程_Navicat怎样导入导出sql文件?(图文步骤+视频教程)...
  10. 此计算机不支持动态磁盘,磁盘无法分区提示此操作系统不支持动态磁盘故障原因分析与解决...
  11. 早期日语笔记----日语从入门到入土笔记
  12. HTML+CSS静态页面网页设计作业——甜品奶茶店(19页) HTML5网页设计成品_学生DW静态网页设计_web课程设计网页制作
  13. github不小心同步覆盖了本地文件
  14. 干货|最全焊接不良汇总,你知道如何避免吗?
  15. 高速数据线缆自动化测试系统软件NSAT-1000
  16. 计算机从应用上看向那个方向发展,(总)2019年6月一级Ms Office试题
  17. r软件中合并列_将摘要合并到软件中
  18. 接口做的好怎么形容_9个色彩搭配网站,没当过设计师也能做好配色了
  19. 关于linux用Xshell的xftp查看隐藏文件夹和文件
  20. IPTV系统架构的分析与研究

热门文章

  1. 使用Vue2.x高效还原美团外卖项目
  2. 如何腾出计算机内存,win7系统(取消)删除虚拟内存让硬盘空间轻松腾出来
  3. c语言共享内存,在爷儿俩进程间使用共享内存(共享内容含指针)
  4. ug添加imachining变量_UG用的不够快?是不是还没建标准库
  5. Autodesk Flame 2022 for Mac - 高级三维视觉特效合成软件
  6. 剪映专业版Mac版上线,来讲讲体验感吧
  7. github 公钥 私钥_搭建自己的技术博客系列 2:把 Hexo 博客部署到 GitHub 上
  8. 万能驱动安装器_Windows驱动安装指南
  9. STM32H743+Cube-Keil上移植RTX5实时系统
  10. 上传头像mysql_上传头像 - MVC5+EF6+MySql企业网盘实战 - 爱整理