1. 程式人生 > >897. 遞增順序查詢樹--簡單題

897. 遞增順序查詢樹--簡單題

897. 遞增順序查詢樹

給定一個樹,按中序遍歷重新排列樹,使樹中最左邊的結點現在是樹的根,並且每		
個結點沒有左子結點,只有一個右子結點。



示例 :

輸入:[5,3,6,2,4,null,8,1,null,null,null,7,9]

       5
      / \
    3    6
   / \    \
  2   4    8
 /        / \ 
1        7   9

輸出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]

	 1
	  \
       2
		\
	     3
	      \
	       4
            \
             5
              \
               6
                 \
                  7
                   \
                    8
                     \
                      9  


提示:

給定樹中的結點數介於 1 和 100 之間。
每個結點都有一個從 0 到 1000 範圍內的唯一整數值。
  • 分析:

    很討厭這種直接給樹結構作為引數的題目,測試程式碼,還需要自己先構建一棵樹,   
    就不能直接給個數組作為輸入引數麼。
    
  • code

/**
 * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
 */
var n *TreeNode
var m *TreeNode
func increasingBST(root *TreeNode) *TreeNode {
n=nil m=nil return bst(root) } func bst(root *TreeNode) *TreeNode { if root==nil{ return nil } bst(root.Left) root.Left=nil //注意這,不然成環了 if n==nil{ n=root m=n }else{ m.Right=root m=m.Right } bst(root.Right) return
n }