本文共 820 字,大约阅读时间需要 2 分钟。
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
基本思路:采用中序遍历的思维,然后设置两个节点,一个head, 一个pre。这两个节点很精髓,细细体会。
package cn.cqu.edu;/* * * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 * */public class VerifySequence { class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } TreeNode pre=null; TreeNode head=null; public void inOrder(TreeNode root) { if(root==null) { return; } inOrder(root.left); root.left=pre; if(pre!=null) { pre.right=root; } pre=root; if(head==null) { head=root; } inOrder(root.right); } public TreeNode Convert(TreeNode pRootOfTree) { inOrder(pRootOfTree); return head; } public static void main(String[] args) { // TODO Auto-generated method stub }}
转载地址:http://yckmi.baihongyu.com/