给定一个 RB 树,我需要编写一个算法来检查每个红色节点是否有两个子节点黑色。
ie 如果每个红色节点只有黑色子节点,则返回 true,否则返回 false。
这是我的尝试:
ChildCheck(x){
if (x.color==black){
if(x.leftChild !=null or x.leftchild!=nil)
bool a = ChildCheck(x.leftChild)
else a = true
if (x.rightChild!=null or x.leftchild!=nil){
bool b = Childcheck(x.leftChild)
else b = true
return (a && b)
}
else
if (x.leftChild !=null or x.leftchild!=nil)
if(x.leftChild.color==black)
d = true
else d = false
else
d = true
if (x.rightChild !=null or x.rightchild!=nil)
if(x.rightChild.color==black)
e = true
else e = false
else
e = true
return (d && e)
}
}
这会返回正确的答案吗?如果不是,它有什么问题?