首页 > 其他 > 详细

分解让复杂问题简单化-36二叉搜索树与双向链表

时间:2020-06-03 16:54:50      阅读:42      评论:0      收藏:0      [点我收藏+]

题目描述

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

 

 

思路1分析:步骤如下
1.通过中序遍历二叉搜索树的结点保存到数组中,得到了有序的数组,数组里面存储了树结点;
2.遍历一遍数组建立结点之间的联系;
 
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;
    }
}
*/
import java.util.ArrayList;
public class Solution {
    public TreeNode Convert(TreeNode root) {
        if(root==null) return null;
        ArrayList<TreeNode>list=new ArrayList<>();
        Inorder(list,root);//之后list里面保存了搜索二叉树的顺序遍历的结点序列
        return Change(list);
    }
    public void Inorder(ArrayList<TreeNode>list,TreeNode root){
        if(root!=null){
            Inorder(list,root.left);
            list.add(root);
            Inorder(list,root.right);
        }
    }
    public TreeNode Change(ArrayList<TreeNode>list){
        TreeNode head=list.get(0);
        TreeNode p=head;
        for(int i=1;i<list.size();i++){
            TreeNode tmp=list.get(i);
            tmp.left=p;
            p.right=tmp;
            p=tmp;
        }
        return list.get(0);
    }
}

思路2分析(递归):

 

分解让复杂问题简单化-36二叉搜索树与双向链表

原文:https://www.cnblogs.com/xuechengmeigui/p/13037929.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!