gpt4 book ai didi

java - 我的问题是关于 find(Node root ,int level) 方法。这是关于在给定二叉树中查找最深节点的代码

转载 作者:行者123 更新时间:2023-12-02 01:17:02 25 4
gpt4 key购买 nike

在 find(Node root, int level) 方法中,if(!=null) 语句让我感到困惑。假设到达二叉树的最后一个节点时,左侧指向 NULL。 find(root.left,++level) 语句再次递归调用 find() 方法。现在,该节点指向 NULL。所以 if(root!=null) 不会执行。尽管如此,代码运行良好,并且下一行代码在 find() 方法中执行。谁能向我解释一下,当 if(root!=null) 为 false 时,应该跳过整个 if() block ?

//Java程序求最深节点的值//在给定的二叉树中GFG级{

// A tree node 
static class Node
{

int data;
Node left, right;

Node(int key)
{
data = key;
left = null;
right = null;
}
}
static int maxLevel = -1;
static int res = -1;

// maxLevel : keeps track of maximum level seen so far.
// res : Value of deepest node so far.
// level : Level of root
static void find(Node root, int level)
{
if (root != null) **//THIS BLOCK SHOULD BE SKIPPED**
{
find(root.left, ++level);

// Update level and resue
if (level > maxLevel)
{
res = root.data;
maxLevel = level;
}

find(root.right, level);
}
}

// Returns value of deepest node
static int deepestNode(Node root)
{
// Initialze result and max level
/* int res = -1;
int maxLevel = -1; */

// Updates value "res" and "maxLevel"
// Note that res and maxLen are passed
// by reference.
find(root, 0);
return res;
}

// Driver code
public static void main(String[] args)
{

Node root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.left = new Node(4);
root.right.left = new Node(5);
root.right.right = new Node(6);
root.right.left.right = new Node(7);
root.right.right.right = new Node(8);
root.right.left.right.left = new Node(50);
System.out.println(deepestNode(root));
}

}

最佳答案

如果Node参数为空,则意味着我们已经跑出了树的末端,应该“返回”。

对 null 的测试必须去某个地方。将方法放在顶部意味着只需编写一次。

另一种选择是在进行递归调用之前对其进行编码,因此我们永远不会传入 null,但随后测试必须编码 3 次:在左侧调用之前一次,在右侧调用之前一次,在初始调用之前一次。

root 对于参数来说是一个错误的名称,它应该被称为 node。仅仅因为对它的第一次调用传递了根,并不意味着我们应该这样命名它。

关于java - 我的问题是关于 find(Node root ,int level) 方法。这是关于在给定二叉树中查找最深节点的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com