N26_二叉搜索树及双向链表
Posted kexiblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了N26_二叉搜索树及双向链表相关的知识,希望对你有一定的参考价值。
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
package new_offer; /** * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 * 要求不能创建任何新的结点,只能调整树中结点指针的指向。 * @author Sonya *思路:排序的双向链表。left指向前一个、right指向后一个。 */ /** public class TreeNode int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) this.val = val; */ public class N26_ConvertBinarySearchTree //使用中序遍历 但是这里右 中 左是的list永远只指向有序链表的头结点。 TreeNode head=null; //使用递归 public TreeNode Convert(TreeNode pRootOfTree) if(pRootOfTree==null) return null; Convert(pRootOfTree.right); //最重要的中间部分 if(head==null) //(最右边的叶节点) head=pRootOfTree; else //已经有了头结点 对一般的树中的节点的操作。 head.left=pRootOfTree;//当前头结点的前面是根节点 pRootOfTree.right=head;//根节点后面指向当前头结点 head=pRootOfTree;//将头结点置为当前根节点。 Convert(pRootOfTree.left); return head; public static void main(String[] args) // TODO Auto-generated method stub
以上是关于N26_二叉搜索树及双向链表的主要内容,如果未能解决你的问题,请参考以下文章