[Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]
生活随笔
收集整理的這篇文章主要介紹了
[Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】[中等]
【解答思路】
1. 分治 快慢指針
復雜度
2. 分治 + 中序遍歷優化
復雜度
class Solution {ListNode globalHead;public TreeNode sortedListToBST(ListNode head) {globalHead = head;int length = getLength(head);return buildTree(0, length - 1);}public int getLength(ListNode head) {int ret = 0;while (head != null) {++ret;head = head.next;}return ret;}public TreeNode buildTree(int left, int right) {if (left > right) {return null;}int mid = (left + right + 1) / 2;TreeNode root = new TreeNode();root.left = buildTree(left, mid - 1);root.val = globalHead.val;globalHead = globalHead.next;root.right = buildTree(mid + 1, right);return root;} }【總結】
1. 前中后序遍歷變化的是[中]的位置,左到右的順序不改變
前序遍歷 中左右
中序遍歷 左中右
后續遍歷 左右中
2.二叉搜索樹 關鍵 找到中位數
3.相關題目
[Leetcode][第108題][JAVA][將有序數組轉換為二叉搜索樹][二分法][遞歸]
轉載鏈接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/solution/you-xu-lian-biao-zhuan-huan-er-cha-sou-suo-shu-1-3/
總結
以上是生活随笔為你收集整理的[Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 19:A*B问题
- 下一篇: tomcat原理详解和请求过程(涉及网卡