📌  相关文章
📜  国际空间研究组织 | ISRO CS 2016 |问题 37(1)

📅  最后修改于: 2023-12-03 15:07:34.534000             🧑  作者: Mango

国际空间研究组织 - ISRO CS 2016 - 问题 37

此题是关于二叉树的遍历问题,要求按照二叉树的前序遍历方式输出所有叶子节点。以下是题目描述:

给定一棵二叉树,输出叶子节点的值。请按前序遍历方式执行此操作。以下是函数的原型:

void printLeafNodes(struct node* root)
{
     //your code here
}

请编写程序实现该函数。

思路

前序遍历的顺序是先遍历节点本身,然后遍历左子树,最后再遍历右子树。

我们可以通过递归来实现前序遍历,对于每个节点,分别判断是否为叶子节点,如果是,就输出节点的值。

千万注意,递归函数要加一个终止条件,当节点为空时,直接返回即可。

以下是代码:

struct node
{
    int data;
    struct node *left;
    struct node *right;
};

void printLeafNodes(struct node* root)
{
    if(root == NULL) return;

    if(root->left == NULL && root->right == NULL)
    {
        printf("%d ",root->data);
    }

    printLeafNodes(root->left);
    printLeafNodes(root->right);
}
总结

二叉树的遍历是算法中比较重要的知识点,熟悉二叉树的遍历方式能够帮助我们更好地理解和解决问题。在实际开发中,类似这种遍历的需求是非常常见的,掌握了这些基本的算法思想,能够更加轻松地完成开发任务,提高自己的编程效率。