체인 테이블 - 질서정연한 체인 테이블을 균형 두 갈래 찾기 트리로 변환

1844 단어
비교적 직관적인 해법은 위에서 아래로 돌아가는 귀속 해결이다. 먼저 중간 노드를 찾아 뿌리 노드로 한 다음에 좌우 두 부분으로 귀속한다.모든 우리는 먼저 중간 노드를 찾아야 한다. 제목에서 체인 테이블의 결점 수가 짝이면 중간 결점은 두 개의 중간 결점 뒤에 있어야 한다.단일 체인 시계의 경우 반드시 한쪽을 두루 돌아다녀야 하며, 빠른 바늘로 검색 속도를 높일 수 있다.
코드는 다음과 같습니다.
</pre>/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; next = null; } * } *//** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode sortedListToBST(ListNode head) {        if(head == null)              return null;        if(head.next == null){            return new TreeNode(head.val);        }        //         ListNode slow = head;        ListNode fast = head;<p>        ListNode preSlow = null;</p><p></p><p>        /**// ;       * while(fast.next!=null&&fast.next.next!=null)</p><p>       *     {</p><p>       *       preslow=slow;       *       slow=slow.next;       *       fast=fast.next.next;       *     }</p><p>       */</p><p></p>         // ;        while(fast!= null&&fast.next!=null){            preSlow = slow;            slow = slow.next;            fast = fast.next;            if(fast!=null&&fast.next!=null)                {                fast=fast.next;            }        }        //         TreeNode mid = new TreeNode(slow.val);        if(preSlow != null){            preSlow.next = null;            mid.left = sortedListToBST(head);        }        if(slow.next != null){            mid.right = sortedListToBST(slow.next);        }        return mid;    }}<pre name="code" class="java">

좋은 웹페이지 즐겨찾기