子节点比较两次的问题,这样会不会好一点?

来源:6-4 改进添加操作:深入理解递归终止条件

whatevernames

2019-02-24

private void add(Node node, E e) {

	if(e.equals(node.e)) {
		return;
	} else if(e.compareTo(node.e)<0) {
		if(node.right == null) {
			node.right = new Node(e);
			size ++;
			return;
		}else {
			add(node.right,e);
		}
	}else if(e.compareTo(node.e)>0){
		if(node.left ==null) {
			node.left = new Node(e);
			size ++;
			return;
		}else {
			add(node.left,e);
		}
	}
}

这样会不会好一点?

写回答

1回答

liuyubobobo

2019-02-24

可以的,但是这个代码的逻辑显然比我在课程中的代码更复杂:)

private Node add(Node node, E e){    
    if(node == null){    
        size ++;    
        return new Node(e);    
    }    

    if(e.compareTo(node.e) < 0)    
        node.left = add(node.left, e);    
    else if(e.compareTo(node.e) > 0)    
        node.right = add(node.right, e);    
    return node;    
}


0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程