【剑指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;
    }
全部评论

相关推荐

11-27 12:36
已编辑
门头沟学院 前端工程师
Apries:这个阶段来说,很厉害很厉害了,不过写的简历确实不是很行,优势删掉吧,其他的还行
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务