美文网首页
26. 二叉搜索树与双向链表

26. 二叉搜索树与双向链表

作者: 丶沧月 | 来源:发表于2019-03-14 12:42 被阅读0次

    题目描述

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

    解题思路

    代码实现

    /**
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
        }
    }
    */
    //直接用中序遍历
    public class Solution {
        private TreeNode pre = null;//head 的 pre 节点
        private TreeNode head = null;//双向链表的头节点
    
        public TreeNode Convert(TreeNode root) {
            inOrder(root);
            return head;
        }
    
        private void inOrder(TreeNode node) {
            if (node == null)
                return;
            //第一次运行时,会使最左边节点为链表第一个节点
            inOrder(node.left);
            node.left = pre;
            if (pre != null)
                pre.right = node;
            pre = node;
            if (head == null)
                head = node;
            inOrder(node.right);
        }
    }
    

    相关文章

      网友评论

          本文标题:26. 二叉搜索树与双向链表

          本文链接:https://www.haomeiwen.com/subject/ahgxmqtx.html