109. Convert Sorted List to Binary Search Tree

Posted warmland

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了109. Convert Sorted List to Binary Search Tree相关的知识,希望对你有一定的参考价值。

有点没有完全想明白。

能够理解的点有:

1. 给你一个sorted list,用这里面的树构建bst,说明这个list是该bst的inorder遍历。

2. 给你的list相当于一个queue,每次用掉一个node就往后移动一格,相当于queue.poll();

3. 和之前那题serialize的题有点像,我当时选择的方式是preorder,这里是Inorder。但是那个里面叶节点会用#标记,这里没有#, 只能用一个start, end来标记,如果start>end那么就说明已经到叶节点了,返回空,所以建树的顺序是 left = 递归()=> 创建root => root.left = left => root.right = 递归另一半

 

 1 private ListNode node;
 2     public TreeNode sortedListToBST(ListNode head) {
 3         if(head == null) {
 4             return null;
 5         }
 6         int size = 0;
 7         node = head;
 8         ListNode cur = head;
 9         while(cur != null) {
10             cur = cur.next;
11             size++;
12         }
13         return constructTree(0, size - 1);
14     }
15     
16     private TreeNode constructTree(int start, int end) {
17         if(start > end) {
18             return null;
19         }
20         int mid = start + (end - start) / 2;
21         TreeNode left = constructTree(start, mid - 1);
22         TreeNode root = new TreeNode(node.val);
23         root.left = left;
24         node = node.next;
25         root.right = constructTree(mid + 1, end);
26         return root;
27     }

我觉得时间复杂度是O(n),因为node只走了一遍。

可以把serialize和deserialize用inorder再做一遍

以上是关于109. Convert Sorted List to Binary Search Tree的主要内容,如果未能解决你的问题,请参考以下文章

109. Convert Sorted List to Binary Search Tree

109. Convert Sorted List to Binary Search Tree

109. Convert Sorted List to Binary Search Tree

109. Convert Sorted List to Binary Search Tree

109. Convert Sorted List to Binary Search Tree

109. Convert Sorted List to Binary Search Tree