讲二次搜索树转化为排序的双向链表

Posted gylhaut

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了讲二次搜索树转化为排序的双向链表相关的知识,希望对你有一定的参考价值。

package com.gylhaut.bean;

public class TreeNode<T> {
    public T data;
    public TreeNode left;
    public TreeNode right;

    public TreeNode(T data) {
        this.left = null;
        this.right = null;
        this.data = data;
    }
}

 算法实现:

package com.gylhaut.util;

import com.gylhaut.bean.TreeNode;

public class BinaryTreeHelper {

    /**
     * 指向头节点
     * @param root
     * @return
     */
    public static TreeNode convert(TreeNode root){
        root=convert2Link(root);
        while (root.left != null){
            root = root.left;
        }
        return root;
    }

    /**
     * 搜索二叉树转成双向链表
     * @param root
     * @return
     */
    public static TreeNode convert2Link(TreeNode root){
        if(root == null|| (root.left == null && root.right == null)){
            return root;
        }
        TreeNode tmp = null;
        if(root.left != null){
           tmp= convert2Link(root.left);
           while (tmp.right != null){
               tmp = tmp.right;
           }
           tmp.right = root;
           root.left = tmp;
        }
        if (root.right !=null){
            tmp = convert2Link(root.right);
            while (tmp.left != null){
                tmp = tmp.left;
            }
            tmp.left = root;
            root.right = tmp;
        }

        return root;
    }

}

  

以上是关于讲二次搜索树转化为排序的双向链表的主要内容,如果未能解决你的问题,请参考以下文章

二叉搜索树与双向链表

二叉搜索树与双向链表

LeetCode-树二叉搜索树与双向链表

Java 剑指offer(36) 二叉搜索树与双向链表

二叉树与链表

精选力扣500题 第63题 剑指 Offer 36. 二叉搜索树与双向链表c++/java详细题解