【剑指offer】二叉搜索树与双向链表-非递归实现

二叉搜索树与双向链表

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

二叉搜索树的中序遍历就是有序序列,因此对二叉搜索树进行中序遍历,将中序遍历的当前节点与前一个节点进行连接。本解法使用栈完成非递归的遍历。

public static TreeNode Convert(TreeNode pRootOfTree) {
        if (pRootOfTree == null) {
            return pRootOfTree;
        }
        TreeNode head = pRootOfTree;
        TreeNode tmp = null;
        Stack<TreeNode> stack = new Stack<>();
        while (head != null || !stack.empty()) {
            if (head != null) {
                stack.push(head);
                head = head.left;
            } else {
                TreeNode pop = stack.pop();
                head = pop;
                if (tmp != null) {
                    tmp.right = pop;
                }
                pop.left = tmp;
                tmp = pop;
                head = head.right;
            }
        }
        while (tmp.left != null) {
            tmp = tmp.left;
        }
        return tmp;
    }
全部评论

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务