以下任务是做什么的?

时间:2019-07-07 17:43:17

标签: java

我在Java Structures书中找到了BinaryTree类的实现,但是我不完全理解构造函数的最后一个赋值(一个语句中有三个赋值)。

protected E val; // value associated with node
protected BinaryTree<E> parent; // parent of node
protected BinaryTree<E> left, right; // children of node
public BinaryTree()
    // post: constructor that generates an empty node
    {
        val = null;
        parent = null; 
        left = right = this;
}

3 个答案:

答案 0 :(得分:1)

您可以将此任务看做是两个实际的任务:

public static string ApplicationURL = @"https://CoxUR.azurewebsites.net/.auth/login/microsoftaccount/callback";

因为分配将从右到左进行评估,所以为了更好地理解right = this; left = right; 等于left = right = this。因此,left = (right = this)分配的结果基本上将是right = this指向的参考,然后将其分配到right字段。

答案 1 :(得分:1)

就像@Grzegorz所说,这是将实例对象分配给变量left和right的快捷方式。

left = this;
right = this;

因此,您创建的BinaryTree的每个实例,都会将该实例对象分配给变量left和right。

答案 2 :(得分:0)

这是一次完成两个 分配的快捷语法。

它实际上等效于:

right = this;
left = this;