897. 遞增順序查詢樹--簡單題
阿新 • • 發佈:2018-12-21
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
}