Convert Sorted List to Binary Search Tree
Problem:
Given a singly linked list where elements is sorted in ascending order, convert it to a height balanced BST.
Ideas:
A typical DFS idea
My Code:
Public classSolution { PublicTreeNode Sortedlisttobst (ListNode head) {if(Head = =NULL)return NULL; if(Head.next = =NULL)return NewTreeNode (Head.val); ListNode Dummy=NewListNode (-1); Dummy.next=Head; ListNode Mid=Getmiddle (head, dummy); TreeNode Root=NewTreeNode (Mid.val); TreeNode Left=Sortedlisttobst (Dummy.next); TreeNode Right=Sortedlisttobst (Mid.next); Root.left=Left ; Root.right=Right ; returnRoot; } PublicListNode Getmiddle (listnode head, ListNode dummy) {ListNode Pre=dummy; ListNode Slow=Head; ListNode Fast=Head.next; while(Fast! =NULL&& Fast.next! =NULL) {Slow=Slow.next; Fast=Fast.next.next; Pre=Pre.next; } Pre.next=NULL; returnslow; }}View Code
Convert Sorted List to Binary Search Tree