平衡二叉树的特点:中序遍历之后 的顺序是从小到大排序的。
/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($value) { $this->val = $value; }
* }
*/
class Solution {
/**
* @param TreeNode $root
* @return Boolean
*/
function isValidBST($root) {
$node_arr = [];
$node_val = [];
while($root || !empty($node_arr)){
if($root){
array_push($node_arr,$root);
$root = $root->left;
}else{
$pop = array_pop($node_arr);
array_push($node_val,$pop->val);
$root = $pop->right;
}
}
$temp = array_pop($node_val);
while(!empty($node_val)){
$pop = array_pop($node_val);
if($temp <= $pop){
return false;
}
$temp = $pop;
}
return true;
}
}
/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($value) { $this->val = $value; }
* }
*/
class Solution {
/**
* @param TreeNode $root
* @return Boolean
*/
function isValidBST($root) {
$node_arr = [];
$temp = 0;
$flag = false;
while($root || !empty($node_arr)){
if($root){
array_push($node_arr,$root);
$root = $root->left;
}else{
$pop = array_pop($node_arr);
$root = $pop->right;
if($temp >=$pop->val && $flag){
return false;
}
if(!$flag){
$flag = true;
}
$temp = $pop->val;
}
}
return true;
}
}