首頁 > 後端開發 > C++ > 主體

在C語言中,列印給定層級的葉節點

王林
發布: 2023-08-25 14:17:12
轉載
1048 人瀏覽過

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 whichpointer that partic node that 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</p><p>",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
登入後複製

以上是在C語言中,列印給定層級的葉節點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板