码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer:二叉搜索树与双向链表

时间:2021-05-24 16:37:01      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:它的   比较   大于   所有结点   方法   左右子树   方向   节点   双向   

二叉搜索里左子树的值都小于根节点的值,右子树的值都大于根节点的值,如果按从小到大顺序排的话,顺序是跟中序遍历一致的,首先想到的思路是对树进行中序遍历,用一个vector把每个节点都存起来,然后将每个节点双向连接起来,但显然并不是出题者想看到的方法。于是开始往递归的方向想,首先想到的是将根节点左边与左子树值最大的节点(最右节点)连接,将根节点右边与右子树值最小的节点(最左节点)连接,那么这三个节点的顺序就排好了,然后递归左右子树即可,可惜这个递归实现比较困难,于是又想到先从根节点的最左(右)节点开始(因为是双向链表,所以左右都可),让它的左(右)指针指向上一个遍历的节点(初始为空),然后上一个遍历的节点的右(左)指针指向该节点,就实现了两个节点的连接,然后递归右(左)子树即可实现所有结点的连接。

剑指offer:二叉搜索树与双向链表

标签:它的   比较   大于   所有结点   方法   左右子树   方向   节点   双向   

原文地址:https://www.cnblogs.com/gbnb/p/14786328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!