N26

mac2022-06-30  127

题目描述

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

  

转载于:https://www.cnblogs.com/kexiblog/p/11132044.html

最新回复(0)