插入删除树

Node nil;
class Node{
    Node ch,preBro,nextBro,p=nil;
    int id;
    public Node(int id) {
        this.id = id;
    }
    public Node() {

    }
    void init(){
        ch = new Node();
        ch.preBro = ch;
        ch.nextBro = ch;
    }
}
void insert(Node child,Node parent){
    //如果插入队尾
    child.nextBro = parent.ch;
    child.preBro = parent.ch.preBro;
    parent.ch.preBro.nextBro = child;
    parent.ch.preBro = child;
    //      //如果插入队头
    //      child.preBro = parent.ch;
    //      child.nextBro = parent.ch.nextBro;
    //      parent.ch.nextBro.preBro = child;
    //      parent.ch.nextBro = child;
}
void preOrder(Node root){
    System.out.println(root.id);
    Node curr = root.ch.nextBro;
    while(curr!=root.ch) {
        preOrder(curr);
        curr = curr.nextBro;
    }

}
void postOrder(Node root){
    Node curr = root.ch.nextBro;
    while(curr!=root.ch) {
        postOrder(curr);
        curr = curr.nextBro;
    }
    System.out.println(root.id);
}

void delete(Node node){
    Node p = node.p;
    node.preBro.nextBro = node.nextBro;
    node.nextBro.preBro = node.preBro;
    node.preBro = nil;
    node.nextBro = nil;
    node.p = nil;
}

void cover(Node newOne,Node oldOne){ //new继承old的父子关系
    newOne.p = oldOne.p;
    newOne.nextBro = oldOne.nextBro;
    newOne.preBro = oldOne.preBro;

    oldOne.ch.nextBro.preBro = newOne.ch;
    oldOne.ch.preBro.nextBro = newOne.ch;
    newOne.ch.nextBro = oldOne.ch.nextBro;
    newOne.ch.preBro = oldOne.ch.preBro;

    oldOne.ch.nextBro = nil;
    oldOne.ch.preBro = nil;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值