using System;
using System.Collections.Generic;
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}
*/
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类 the root
* @return bool布尔型一维数组
*/
public List<bool> judgeIt (TreeNode root) {
// write code here
List<bool> ans=new List<bool>();
ans.Add(IsValidBST(root, int.MinValue,int.MaxValue));
ans.Add(IsCompleteBT(root));
return ans;
}
public bool IsValidBST(TreeNode root,int min,int max)
{
if(root==null)
return true;
if(root.val>=max || root.val<=min)
return false;
return IsValidBST(root.left, min, root.val) && IsValidBST(root.right, root.val, max);
}
public bool IsCompleteBT(TreeNode root)
{
Queue<TreeNode> temp=new Queue<TreeNode>();
temp.Enqueue(root);
while(temp.Peek()!=null)
{
var node=temp.Dequeue();
temp.Enqueue(node.left);
temp.Enqueue(node.right);
}
while(temp.Count!=0 && temp.Peek()==null)
temp.Dequeue();
return temp.Count==0;
}
}
p判断二叉搜索树: 递归判断,不断更新边界
判断完全二叉树: 层序遍历,遇到空节点退出,如果为完全二叉树,那么某一层应该全为空节点,否则不是完全二叉树



京公网安备 11010502036488号