[英]Binary Tree Level Order Traversal LeetCode
这个问题来自LeetCode。 问题是要找到树最后一级的最左侧节点。 我通过保留一个额外的指针来跟踪每个级别的第一个元素(当然将是最左边的元素),使用简单的级别顺序遍历进行了尝试。
虽然代码在我的机器上运行得很好。 它在leetcode判断器中显示了不同的输出。 这是我的代码
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;
}
有关问题的详细分析,请访问https://leetcode.com/problems/find-bottom-left-tree-value/#/description
对于给定的测试用例[2,1,3],我的代码给出的输出为0,而正确的输出为1。
任何帮助表示赞赏。
这一点:
if(q.front()!=NULL)
您不知道队列中是否有任何内容。 您应该测试沃思q.empty()
使用前q.front()
因此,您的程序表现出不确定的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.