卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章16333本站已运行3317

在C语言中,打印给定层级的叶节点

The task involves printing leaf nodes of a binary tree at given level k which is specified by the user.

Leaf nodes are the end nodes whose left and right pointer is NULL which means that particular node is not a parent node.

Example

的中文翻译为:

示例

Input : 11 22 33 66 44 88 77
Output : 88 77

在C语言中,打印给定层级的叶节点

在这里,k代表需要打印的树的层级。这里使用的方法是遍历每个节点,并检查节点是否有任何指针。即使只有一个指针,表示左侧或右侧或两者都有,那个特定的节点也不能是叶节点。

使用层次遍历技术递归遍历每个节点,从左侧开始,然后是根节点,最后是右侧。

下面的代码展示了给定算法的C语言实现

算法

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *left, *right
   Step 2 -> create function for inserting node with parameter as new_data
      Declare temp variable of node using malloc
      Set temp->data = new_data
      Set temp->left = temp->right = NULL
      return temp
   Step 3 -> declare Function void leaf(struct node* root, int level)
      IF root = NULL
         Exit
      End
      IF level = 1
         IF root->left == NULL && root->right == NULL
            Print root->data
         End
      End
      ELSE IF level>1
         Call leaf(root->left, level - 1)
         Call leaf(root->right, level - 1)
      End
   Step 4-> In main()
      Set level = 4
      Call New passing value user want to insert as struct node* root = New(1)
      Call leaf(root,level)
STOP

Example

的中文翻译为:

示例

include<stdio.h>
#include<stdlib.h>
//structre of a node defined
struct node {
   struct node* left;
   struct node* right;
   int data;
};
//structure to create a new node
struct node* New(int data) {
   struct node* temp = (struct node*)malloc(sizeof(struct node));
   temp->data = data;
   temp->left = NULL;
   temp->right = NULL;
   return temp;
}
//function to found leaf node
void leaf(struct node* root, int level) {
   if (root == NULL)
      return;
   if (level == 1) {
      if (root->left == NULL && root->right == NULL)
      printf("%d

",root->data); } else if (level > 1) { leaf(root->left, level - 1); leaf(root->right, level - 1); } } int main() { printf("leaf nodes are: "); struct node* root = New(11); root->left = New(22); root->right = New(33); root->left->left = New(66); root->right->right = New(44); root->left->left->left = New(88); root->left->left->right = New(77); int level = 4; leaf(root, level); return 0; }

输出

如果我们运行上述程序,它将生成以下输出。

leaf nodes are: 88 77

卓越飞翔博客
上一篇: 简单教程:PHP如何对接百度表格文字识别接口?
下一篇: 如何使用Python对图片进行模式识别
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏