当root.right和root的颜色为红色时,我想将根节点的颜色更改为黑色。 现在在这个代码中我首先插入5所以这个根的颜色将是黑色。然后我插入6然后这个节点的颜色将是红色然后我插入7然后该节点的颜色将是红色。所以现在这个节点和前一个节点有红色所以这里我需要改变包含data = 6
的前一个节点的颜色package redblack;
public class Redblack {
public enum Color {
red,black,blue
};
static class Node{
int data;
Color color;
Node right;
Node parent;
Node(int data){
color=Color.black;
this.data=data;
right=null;
parent =null;
}
}
static Node insertion(Node root,int data){
if(root==null){
Node root1=new Node(data);
return root1;
}
if(root.data<data){
root.right=insertion(root.right,data);
root.right.parent=root;
root.right.color=Color.red;
if(root.parent!=null)
root.color=Color.black; // Whats wrong here?
}
return root;
}
public static void main(String[] args) {
Node root=new Node(5);
root=insertion(root,6);
root=insertion(root,7);
System.out.println(root.right.color); //Getting red color but i want black color here
}
}
答案 0 :(得分:0)
您在此处将颜色设置为红色:
System.out.println(root.right.color);
所以这一行必须打印红色而不是黑色:
root.right
请注意,即使您将内部调用内的insertion
颜色设置为红色insertion
,当它返回到外部root.right=insertion(root.right,data);
...
root.right.color=Color.red;
时,您也会这样做:
root.right
所以,你覆盖了你设置的任何颜色if ($(this).attr("value") == "button-three") {
var skoring = getRadioVal(document.getElementById('mentodeNegasi'),'negasi')
$.ajax({
data: { metodeSkoring: skoring },
type: 'POST',
url: '/evaluasiModel'
})
}
总是红色。
答案 1 :(得分:0)
你没有为root.parent分配任何值,所以它总是为null你在这段代码root=insertion(root,7);
中你删除了前一个权利并重新插入一个红色你应该替换这个{ {1}} root=insertion(root,7);