【追求进步】二叉搜索树与双向链表

来源:互联网 发布:sql 语法 编辑:程序博客网 时间:2024/05/21 06:39

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
不知道为什么思路还是迷迷糊糊!!!
在线代码:
/**public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*//*  分析二叉搜索树即就是排序树    举例为:          10      6        14   4    8    12   16   */public class Solution {   public TreeNode Convert(TreeNode pRootOfTree) {        //用于保存处理过程中双向链表的尾结点        TreeNode[] lastNode=new TreeNode[1];        converNode(pRootOfTree,lastNode);        TreeNode head=lastNode[0];         while(head!=null&&head.left!=null){            head=head.left;        }        return head;//    }    public void converNode(TreeNode node,TreeNode[] lastnode){        if(node!=null){            if(node.left!=null){                converNode(node.left,lastnode);//这个递归进去就是打印4             }            //将当前结点的最左边的结点交给链表的尾结点            node.left=lastnode[0];//将链表的尾端给了4            if(lastnode[0]!=null){                lastnode[0].right=node;            }            //记录当前结点为尾结点            lastnode[0]=node;            //处理右结点            if(node.right!=null){               converNode(node.right,lastnode);            }        }    }      }


0 0