面试题27:二叉搜索树与双向链表


面试题27:二叉搜索树与双向链表

题目描述

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

代码:

package offer;

/**
 * 面试题27:二叉搜索树与双向链表
 * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
 */
public class _27_tree_to_linked {
    public static void main(String[] args) {
        TreeNode27 treeNode27 = new TreeNode27(10);
        treeNode27.left= new TreeNode27(6);
        treeNode27.right= new TreeNode27(14);
        treeNode27.left.left= new TreeNode27(4);
        treeNode27.left.right= new TreeNode27(8);
        treeNode27.right.left= new TreeNode27(12);
        treeNode27.right.right= new TreeNode27(16);
        Solution27 solution27 = new Solution27();
        TreeNode27 pResult=solution27.Convert(treeNode27);
        while(pResult!=null){
            System.out.print(pResult.val+"、");
            pResult=pResult.right;
        }
    }
}
class Solution27 {
    public TreeNode27 Convert(TreeNode27 pRootOfTree) {
        TreeNode27 pResult=convertNode(pRootOfTree,null);
        //pResult指向双向链表的尾结点,返回头结点
        while(pResult!=null&&pResult.left!=null){
            pResult=pResult.left;
        }
        return pResult;
    }
    public TreeNode27 convertNode(TreeNode27 pRootOfTree,TreeNode27 pResult){
        if(pRootOfTree==null){
            return null;
        }
        if(pRootOfTree.left!=null){
            pResult=convertNode(pRootOfTree.left,pResult);
        }
        pRootOfTree.left=pResult;
        if(pResult!=null){
            pResult.right=pRootOfTree;
        }
        pResult=pRootOfTree;
        if(pRootOfTree.right!=null){
            pResult=convertNode(pRootOfTree.right,pResult);
        }
        return pResult;
    }
}
class TreeNode27 {
    int val = 0;
    TreeNode27 left = null;
    TreeNode27 right = null;
    public TreeNode27(int val) {
        this.val = val;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值