Rumah >pembangunan bahagian belakang >tutorial php >Seimbangkan Pokok Carian Binari
1382. Seimbangkan Pokok Carian Binari
Sederhana
Memandangkan punca pokok carian binari, kembalikan pohon carian binari seimbang dengan nilai nod yang sama. Jika terdapat lebih daripada satu jawapan, kembalikan mana-mana daripadanya.
Pokok carian binari adalah seimbang jika kedalaman dua subpokok setiap nod tidak pernah berbeza lebih daripada 1.
Contoh 1:
Contoh 2:
Kekangan:
Penyelesaian:
/** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * public $right = null; * function __construct($val = 0, $left = null, $right = null) { * $this->val = $val; * $this->left = $left; * $this->right = $right; * } * } */ class Solution { /** * @param TreeNode $root * @return TreeNode */ function balanceBST($root) { $nums = []; $this->inorder($root, $nums); return $this->build($nums, 0, count($nums) - 1); } function inorder($root, &$nums) { if ($root == null) return; $this->inorder($root->left, $nums); $nums[] = $root->val; $this->inorder($root->right, $nums); } function build($nums, $l, $r) { if ($l > $r) return null; $m = (int)(($l + $r) / 2); return new TreeNode($nums[$m], $this->build($nums, $l, $m - 1), $this->build($nums, $m + 1, $r)); } }Pautan Kenalan
Atas ialah kandungan terperinci Seimbangkan Pokok Carian Binari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!