題目:將有序陣列轉換為二叉搜尋樹
題目描述:
將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。
本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。
示例:
給定有序陣列: [-10,-3,0,5,9],分析:利用二分法建樹乙個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜尋樹:
0/ \
-3 9
/ /
-10 5
上**:
/*** definition for a binary tree node.
* type treenode struct
*/func sortedarraytobst(nums int) *treenode
return buildtree(nums,0,len(nums)-1)
}func buildtree(nums int,l int,r int) *treenode
if l==r
return p
}mid:=(l+r)/2
root:=&treenode
root.left=buildtree(nums,l,mid-1)
root.right=buildtree(nums,mid+1,r)
return root
}題目:有序鍊錶轉換二叉搜尋樹
題目描述:
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。
本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。
示例:
給定的有序鍊錶: [-10, -3, 0, 5, 9],分析:跟上個題目類似乙個可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面這個高度平衡二叉搜尋樹:
0/ \
-3 9
/ /
-10 5
上**:
/*** definition for singly-linked list.
* type listnode struct
*//**
* definition for a binary tree node.
* type treenode struct
*/func sortedlisttobst(head *listnode) *treenode
return buildtree(head,nil)
}func buildtree(head *listnode,tail *listnode) *treenode
fast :=head
slow:=head
for fast!=tail && fast.next!=tail
root:=&treenode
root.left=buildtree(head,slow)
root.right=buildtree(slow.next,tail)
return root
}
每日程式設計(五) leetcode刷題
題目 最後乙個單詞的長度 描述 給定乙個僅包含大小寫字母和空格 的字串,返回其最後乙個單詞的長度。如果不存在最後乙個單詞,請返回 0 說明 乙個單詞是指由字母組成,但不包含任何空格的字串。示例 輸入 hello world 輸出 5分析 比較簡單了,很明顯字串的分割,去最後乙個字串,計算長度即可,但...
每日程式設計(十一) leetcode刷題
題目 平衡二叉樹 題目描述 給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。分析 沒什麼可說的,雙遞迴,先...
每日程式設計(十二) leetcode刷題
題目表述 給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1返回 true,因為存在目標和為 22 的根節點到葉子節點的路...