二叉搜索树与双向链表

二叉搜索树与双向链表

http://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5

题目描述

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

思路:中序遍历的节点顺序转为双向链表

中序遍历将left连接上前驱节点,最后倒序遍历更新right为后驱节点顺便找到链表头部

public class Solution {
public TreeNode Convert(TreeNode pRootOfTree) {
        if (pRootOfTree == null) {
            return null;
        }
        Stack<TreeNode> stack = new Stack<>();
        TreeNode node = pRootOfTree;
        TreeNode pre = null;
        while (node != null || !stack.isEmpty()) {
            while (node != null) {
                stack.push(node);
                node = node.left;
            }
            node = stack.pop();
            node.left = pre;
            pre = node;
            node = node.right;
        }
        while (pre.left != null) {
            pre.left.right = pre;
            pre = pre.left;
        }
        return pre;
    }
}
全部评论

相关推荐

2024-11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
三斤大芒果:切图仔过年回去天塌了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务