給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。
本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。
示例:給定的有序鍊錶: [-10, -3, 0, 5, 9],
乙個可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面這個高度平衡二叉搜尋樹:
0/ \
-3 9
/ /
-10 5
找到鍊錶中點,以中點為根,左邊鍊錶遞迴獲取左子樹,右邊鍊錶遞迴獲取右子樹。
注意:學習快慢法找鍊錶中點。
/**
* definition for singly-linked list.
* public class listnode
* listnode(int val)
* listnode(int val, listnode next)
* }*//**
* definition for a binary tree node.
* public class treenode
* treenode(int val)
* treenode(int val, treenode left, treenode right)
* }*/class solution
pre.next = null; //將中點左邊的鍊錶分開
treenode root = new treenode(p.val);
root.left = sortedlisttobst(head);
root.right = sortedlisttobst(p.next);
return root;
}}
力扣 有序鍊錶轉換二叉搜尋樹
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 ...
109 有序鍊錶轉換二叉搜尋樹
給定乙個單鏈表,其中的元素按公升序排序,將其轉換為高度平衡的二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定的有序鍊錶 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 ...
109 有序鍊錶轉換二叉搜尋樹
這道題是將有序鍊錶轉化成高度平衡的二叉查詢樹。於是晚上用自己的電腦,重新在本地編譯器上手打了一遍再提交突然就好了 emmm mark一下,可能是一些格式問題吧。definition for singly linked list.class listnode def init self,x self....