1. 程式人生 > >劍指offer程式設計題(JAVA實現)——第26題:二叉搜尋樹與雙向連結串列

劍指offer程式設計題(JAVA實現)——第26題:二叉搜尋樹與雙向連結串列



github https://github.com/JasonZhangCauc/JZOffer
/**
 * 
 * 劍指offer程式設計題(JAVA實現)——第26題:二叉搜尋樹與雙向連結串列
 * 
 * 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。
 * 要求不能建立任何新的結點,只能調整樹中結點指標的指向。
 * (是指不能new新的結點)
 */
public class Test26 {
	public class TreeNode {
	    int val = 0;
	    TreeNode left =
null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public class Solution { public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null) { return null; } if(pRootOfTree.left==null&&pRootOfTree.right==null) { return
pRootOfTree; } TreeNode left = Convert(pRootOfTree.left); TreeNode p = left; if(p!=null&&p.right!=null) { while(p.right!=null) { p = p.right; } } //p為左子樹最右節點 if(left!=null) { p.right=pRootOfTree; pRootOfTree.left=p; } TreeNode right = Convert
(pRootOfTree.right); if(right!=null) { right.left=pRootOfTree; pRootOfTree.right=right; } return left != null ? left : pRootOfTree; } } }