题解 | 二叉搜索树与双向链表

二叉搜索树与双向链表

https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

import java.util.*;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree == null){
            return pRootOfTree;
        }
        Stack<TreeNode> stack = new Stack<>();
        TreeNode pre = null;
        while(pRootOfTree != null || !stack.isEmpty()){
            while(pRootOfTree != null){
                stack.push(pRootOfTree);
                pRootOfTree = pRootOfTree.left;
            }
            TreeNode curr = stack.pop();
            if(pre != null){
                pre.right = curr;
                curr.left = pre;
            }
            pre = curr;
            pRootOfTree = curr.right;
        }
        while(pre.left != null){
            pre = pre.left;
        }
        return pre;
    }
}

中序遍历,每次弹栈的时候修改当前节点和前面节点的指向关系,注意最后要返回最左边的节点

全部评论

相关推荐

码农顶针:估计让你免费辅导老板孩子的学习
点赞 评论 收藏
分享
ResourceUt...:楼主有自己的垃圾箱,公司也有自己的人才库
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务