博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[剑指offer] 26. 二叉搜索树与双向链表
阅读量:5148 次
发布时间:2019-06-13

本文共 643 字,大约阅读时间需要 2 分钟。

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

思路:

利用中序遍历的特性,从小到大遍历二叉树每一个结点。

修改中序遍历,在在其中加入一个前驱结点

遍历左子树
前驱结点右指针指向当前结点
当前结点指向左指针指向前驱结点
前驱 = 当前
遍历右子树
 
此时遍历结果pre指针指向的是链表尾,如果将上面的左右反过来,则直接返回pre即正确的答案。
class Solution{  public:    TreeNode *preNode = NULL;    TreeNode *Convert(TreeNode *curNode)    {        if (curNode == NULL)            return NULL;        Convert(curNode->right);        if (preNode)        {            preNode->left = curNode;            curNode->right = preNode;        }        preNode = curNode;        Convert(curNode->left);        return preNode;    }};

 

转载于:https://www.cnblogs.com/ruoh3kou/p/10080648.html

你可能感兴趣的文章
让HttpClient不要打印巨多的日志
查看>>
洛谷 [P1024]一元三次方程求解
查看>>
MVC MODEL Attribute 操纵速记
查看>>
wcf服务端代码方式及客户端代码方式
查看>>
电商测试环境Jenkins multibranch pipeline实践
查看>>
Android--sos闪光灯
查看>>
关于Google App Engine
查看>>
场和帧的 关系(转)
查看>>
verilog 有符号数(2转)
查看>>
JS命名空间、对象封装
查看>>
自定义HttpFilter模块完善
查看>>
编码上的小改进
查看>>
Conda常见命令
查看>>
【动态规划】Codeforces 706C Hard problem
查看>>
1.4.1 Arithmetic Progressions
查看>>
React Native安装步骤
查看>>
数据转换服务-文本抽出技术
查看>>
GPS导航仪常见术语解释
查看>>
实验七
查看>>
HDU-2028
查看>>