剑指offer 27二叉搜索树与双向链表
class Solution {
public:
void ConvertNode(TreeNode* pRootOfTree,TreeNode** pre)
{
if(pRootOfTree)
{
TreeNode* cur=pRootOfTree;
if(cur->left)
ConvertNode(cur->left,pre);
cur->left=*pre;
if(*pre)
(*pre)->right=cur;
*pre=cur;
if(cur->right)
ConvertNode(cur->right,pre);
}
}
TreeNode* Convert(TreeNode* pRootOfTree)
{
if(!pRootOfTree)
return NULL;
TreeNode* pre=NULL;
ConvertNode(pRootOfTree,&pre);
while(pre->left)
{
pre=pre->left;
}
return pre;
}
};
二叉搜索树的前序遍历就是从小到大输出,因此这里是在中序遍历的基础上进行链表操作。left指针指向前一个数,right指针指向后一个数,在cur结点,设置其left指针,并设置pre结点的right指针。这样递归地把树改为链表。
剑指offer 27二叉搜索树与双向链表的更多相关文章
- 剑指offer——27. 二叉搜索树与双向链表(Java版)
题目: 剑指offer的题目有挺多都挺典型的,就像这一道.不过书中的代码写的真是ugly,有很多题目LeetCode上都有,可以去LeetCode讨论区看看,经常有一些大神分享,写的代码真是高效.简洁 ...
- 剑指 Offer 36. 二叉搜索树与双向链表 + 中序遍历 + 二叉排序树
剑指 Offer 36. 二叉搜索树与双向链表 Offer_36 题目描述 题解分析 本题考查的是二叉树的中序遍历以及二叉排序树的特征(二叉排序树的中序遍历序列是升序序列) 利用排序二叉树中序遍历的性 ...
- 剑指 Offer 36. 二叉搜索树与双向链表
剑指 Offer 36. 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的 ...
- 【剑指Offer】二叉搜索树与双向链表 解题报告(Python)
[剑指Offer]二叉搜索树与双向链表 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interview ...
- 【剑指offer】二叉搜索树转双向链表,C++实现
原创博文,转载请注明出处! # 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二叉树节点的定义 struct TreeNod ...
- 【Java】 剑指offer(36) 二叉搜索树与双向链表
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不 ...
- Go语言实现:【剑指offer】二叉搜索树与双向链表
该题目来源于牛客网<剑指offer>专题. 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. Go语言实现: type T ...
- 【剑指offer】二叉搜索树转双向链表
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26623795 题目描写叙述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表. ...
- 《剑指offer》二叉搜索树和双向链表
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
随机推荐
- python基础(三)
set集合 set集合创建 #方式1: se = {'} #与字典类似dict1 = {'k1','v1','k2','v2'} #方式2: se = set() #创建一个空的集合 list1 = ...
- VB生成xml
Dim text As XmlText Dim doc As New XmlDocument '加入XML的声明段落 Dim node As XmlNode = doc.CreateXmlDeclar ...
- layout_weight 的解释及使用
layout_weight 的解释及使用 转自:http://my.oschina.net/jsan/blog/191492 在Android的控件布局中,有一个奇葩的 layout_weight 属 ...
- poj 1007 纯水题 排序
#include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h> ...
- centos6.5 eclipse C/C++开发环境
- jsxtransformer.js 和browser.js有什么关系?
这个确实是百度就能解决的问题 补充下楼上的回答在react 0.14前,浏览器端实现对jsx的编译依赖jsxtransformer.js 在react 0.14后,这个依赖的库改为browser.js ...
- 固定cell.imageView.image的大小
cell.imageView.image的大小 会随着Cell的高度而变化,不同的图片显示的也不一样,在网上找了几种方法,简单方便的是下面这种: UIImage *icon = [UIImage im ...
- Mac 任何选项没有了怎么办?
1.如果需要恢复允许"任何来源"的选项,即关闭 Gatekeeper,请打开终端 2.然后使用 spctl 命令: sudo spctl --master-disable
- 一台服务器同时搭建IIS和WAMP,利用WAMP 80端口转发
打开wamp 里面的 httpd.conf 文件,找到以下四个语句,取消注释 #LoadModule proxy_module modules/mod_proxy.so -->LoadModul ...
- ASP.Net连接SQLServer 连接字符串
引用命名空间 using System.Data; using System.Data.SqlClient; 连接字符串 // windows 验证方式数据库中存在单一实例 string connec ...