1. 程式人生 > >26二叉搜索樹與雙向鏈表

26二叉搜索樹與雙向鏈表

post pre tle 每一個 左右子樹 treenode 轉換 spa bject

題目描述

輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。

思路:

由於要求轉換之後的鏈表是排好序的,我們可以中序遍歷樹的蒙一個節點。因為中序遍歷是按照從小到大的順序遍歷二叉樹的每一個結點。
把左右子樹都轉換成排序的雙向鏈表之後再和根節點鏈接起來,整棵二叉樹就轉換成了排序的雙向鏈表。

 1 public class Solution {
 2     TreeNode head = null;
 3     public TreeNode Convert(TreeNode root) {
 4         if(root==null
) return null; 5 6 Convert(root.right); 7 if(head==null){//遞歸到最右邊了的初始情況 8 head=root; 9 } 10 else{ 11 head.left = root; 12 root.right=head; 13 head = root; 14 } 15 Convert(root.left); 16 return
head; 17 } 18 }

26二叉搜索樹與雙向鏈表