gpt4 book ai didi

c++ - 二叉树层序遍历 LeetCode

转载 作者:行者123 更新时间:2023-11-27 23:54:04 26 4
gpt4 key购买 nike

好吧,这一题来自 LeetCode。问题是找到树的最后一层最左边的节点。我通过保留一个额外的指针来跟踪每个级别的第一个元素(当然是最左边的元素),使用简单的级别顺序遍历对其进行了尝试。

虽然代码在我的机器上运行得很好。它在 leetcode judge 中显示了不同的输出。这是我的代码

int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*>q;
q.push(root);
q.push(NULL);
TreeNode*first;

while(!q.empty())
{
TreeNode*temp = q.front();
q.pop();
if(temp==NULL)
{
if(q.front()!=NULL)
first = q.front();
if(!q.empty())
q.push(NULL);
}
else
{
if(temp->left)
{
q.push(temp->left);
}
if(temp->right)
{
q.push(temp->right);
}
}
}
return first->val;
}

问题的详 segmentation 析请访问https://leetcode.com/problems/find-bottom-left-tree-value/#/description

对于给定的测试用例 [2,1,3],我的代码给出的输出是 0,而正确的输出是 1。

感谢任何帮助。

最佳答案

此时:

  if(q.front()!=NULL)

您不知道队列中是否有任何内容。在使用 q.front() 之前,您应该使用 q.empty() 进行测试。因此,您的程序表现出未定义的行为。

关于c++ - 二叉树层序遍历 LeetCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940309/

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