[LeetCode]Convert Sorted List to Binary Search Tree

/** * Definition for ListNode. * public class ListNode { *int val; *ListNode next; *ListNode(int val) { *this.val = val; *this.next = null; *} * } * Definition of TreeNode: * public class TreeNode { *public int val; *public TreeNode left, right; *public TreeNode(int val) { *this.val = val; *this.left = this.right = null; *} * } */ public class Solution {/*** @param head: The first node of linked list.* @return: a tree node*/public TreeNode sortedListToBST(ListNode head) {if (head == null)return null;TreeNode root = null;while (head != null) {int v = head.val;head = head.next;TreeNode node = new TreeNode(v);node.left = root;root = node;}return adjustNode(root);}TreeNode adjustNode(TreeNode node) {if (node != null) {int l = getLevel(node.left);int r = getLevel(node.right);while (l – r >= 2) {TreeNode tmp = node.left;if (tmp.right == null) {node.left = null;tmp.right = node;node = tmp;} else {TreeNode lmax = tmp.right;while (lmax.right != null) {tmp = lmax;lmax = lmax.right;}tmp.right = null;lmax.left = node.left;lmax.right = node;node.left = null;node = lmax;}l = getLevel(node.left);r = getLevel(node.right);}while (r – l >= 2) {TreeNode tmp = node.right;if (tmp.left == null) {node.right = null;tmp.left = node;node = tmp;} else {TreeNode lmax = tmp.left;while (lmax.left != null) {tmp = lmax;lmax = lmax.left;}tmp.left = null;lmax.right = node.right;lmax.left = node;node.right = null;node = lmax;}l = getLevel(node.left);r = getLevel(node.right);}node.left = adjustNode(node.left);node.right = adjustNode(node.right);}return node;}int getLevel(TreeNode node) {if (node == null)return 0;elsereturn Math.max(getLevel(node.left) + 1, getLevel(node.right) + 1);}}

,遇见你,是我一生的幸运;爱上你,

[LeetCode]Convert Sorted List to Binary Search Tree

相关文章:

你感兴趣的文章:

标签云: