文章目录

  • 1. 题目
  • 2. 解题

1. 题目

将一个二叉树按照中序遍历转换成双向链表。

样例

样例 1:
输入:4/ \2   5/ \1   3        输出: 1<->2<->3<->4<->5样例 2:
输入:3/ \4   1输出:4<->3<->1

https://www.lintcode.com/problem/convert-binary-tree-to-doubly-linked-list/description

2. 解题

  • 非递归中序遍历,使用栈
/*** Definition of Doubly-ListNode* class DoublyListNode {* public:*     int val;*     DoublyListNode *next, *prev;*     DoublyListNode(int val) {*         this->val = val;*         this->prev = this->next = NULL;*     }* } * Definition of TreeNode:* class TreeNode {* public:*     int val;*     TreeNode *left, *right;*     TreeNode(int val) {*         this->val = val;*         this->left = this->right = NULL;*     }* }*/class Solution {public:/*** @param root: The root of tree* @return: the head of doubly list node*/DoublyListNode * bstToDoublyList(TreeNode * root) {// write your code hereif(!root) return NULL;stack<TreeNode*> stk;DoublyListNode *h = new DoublyListNode(-1), *pre = h;while(!stk.empty() || root){while(root){stk.push(root);root = root->left;}root = stk.top();stk.pop();DoublyListNode *cur = new DoublyListNode(root->val);pre->next = cur;cur->prev = pre;pre = cur;root = root->right;}DoublyListNode *head = h->next;h->next = NULL;head->prev = NULL;delete h;return head;}
};

50 ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LintCode 378. 将二叉树转换成双链表(非递归遍历)相关推荐

  1. Lintcode -378. 将二叉查找树转换成双链表

    378. 将二叉查找树转换成双链表 将一个二叉查找树按照中序遍历转换成双向链表. 样例 给定一个二叉查找树: 4/ \2 5/ \ 1 3 返回 1<->2<->3<-& ...

  2. C++ class实现二叉树(完整代码,附非递归遍历)

    代码如下: #include <iostream> #include <stack> #include <queue> using namespace std; t ...

  3. 遍历二叉树的各种操作(非递归遍历)

    先使用先序的方法建立一棵二叉树,然后分别使用递归与非递归的方法实现前序.中序.后序遍历二叉树,并使用了两种方法来进行层次遍历二叉树,一种方法就是使用STL中的queue,另外一种方法就是定义了一个数组 ...

  4. 二叉树:表达式二叉树转换成中缀式(括弧处理)

    文章目录 问题描述 : 输入说明 : 输出说明 : 输入范例 : 输出范例 : 思路分析 代码实现 事故现场 第一次提交 分析与总结 如果不妥请留言,你的关注和回复是对我最大的鼓励,谢谢!如果想立即回 ...

  5. 数据结构专题 | 先序非递归遍历二叉树

    先序非递归遍历二叉树,主要是利用了栈的先进后出原理,用一个栈即可实现该算法,下面我们一起来看一下如何来实现吧 目录 先序建立二叉树 先序递归遍历二叉树 先序非递归遍历二叉树 先序建立二叉树 在进行先序 ...

  6. 左神算法:将搜索二叉树转换成双向链表(Java版)

    本题来自左神<程序员代码面试指南>"将搜索二叉树转换成双向链表"题目. 题目 对二叉树的节点来说,有本身的值域,有指向左孩子节点和右孩子节点的两个指针:对双向链表的节点 ...

  7. 二叉树转换成森林amp;森林变成二叉树

    一,树转换成二叉树 1,将全部兄弟结点连起来; 2,保留第一个兄弟结点与父节点的连接,断开其它兄弟结点与父节点的连接,然后以根节点为轴依照顺时针方向旋转45度 二,二叉树转换成森林 方法: 1,将每棵 ...

  8. C语言-数据结构-二叉树的递归遍历和非递归遍历

    看了大量网络相关的理论和程序,多数的C++ 写的,这里使用devC++ 编程语言 C语言; 整合王道考研答案和理论, 还有小甲鱼的数据结构, 郝斌的数据结构,各有特点吧 最值得研究的还是后序遍历的非递 ...

  9. 二叉树学习之非递归遍历

    二叉树递归遍历可谓是学过数据结构的同仁都能想一下就能写出来,但在应聘过程我们常常遇到的是写出一个二叉树非递归遍历函数,接着上篇文章写二叉树的非递归遍历,先难后易,一步一步的来. 先上代码: #incl ...

最新文章

  1. LinkedIn招聘推荐系统中的机器学习的威力
  2. bootcamp空间不足_Bootcamp安装WinXP补丁时C盘空间不足怎么办?
  3. error: not found: value SparkSession
  4. 后台性能测试不可不知的二三事
  5. 只会java_只会码代码的你和Java工程师之间的差距有大?
  6. Linux 命令(48)—— stat 命令
  7. 华为 “OSPF” 单区域配置
  8. Apache Mina框架自身实现的过滤器
  9. 2022 基于SpringBoot的高校食堂点评系统 大众点评系统
  10. 【教程搬运】廖雪峰Git的使用教程(一)
  11. vector的初始化
  12. html弹框整体缩放,网页弹出对话框无法放大
  13. Vue的8种通信方式
  14. win10计算机网络共享设置密码,Win10使用技巧:给共享文件夹添加密码
  15. 给IT新人的15个建议:苦逼程序员的辛酸反省与总结!
  16. 4K网络视频下载器:4K Video Downloader mac汉化教程
  17. 黑客惊天发现:苹果公司能监视每台iPhone
  18. 【从零开始学习 UVM】6.4、UVM 激励产生 —— uvm_do 宏详解
  19. 通过java解码web前端直接预览海康威视摄像头
  20. can总线不加末端电阻_遇到总线故障总头疼,看完这些分分钟秒修

热门文章

  1. ajax on ture,细数Ajax请求中的async:false和async:true的差异
  2. 手机处理器排行榜2019_手机处理器AI性能排行榜出炉,高通骁龙第一,华为排在第十名...
  3. python 对象序列化 pickling_python操作文件——序列化pickling和JSON
  4. java 路径获取文件名称_java 根据文件获取文件名及路径的方法
  5. php mysql xa事务_XA mysql php 分布式事务
  6. html 转word c#,c#操作word类,进行html和word文档的互相转换
  7. java递归空瓶换饮料_问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料? | 学步园...
  8. Vue-watch选项
  9. c#: 任务栏进度显示(TaskbarManager)
  10. iOS开发针对对Masonry下的FPS优化讨论