使用 C++ 中的迭代法,從左到右列印二叉樹中所有葉節點


在此示例中,我們得到了一個二叉樹,我們需要使用迭代法從左到右列印二叉樹的所有葉節點。

我們來舉個例子來理解這個問題

輸入 -

輸出 - 1 4 7

為了使用迭代法解決這個問題,我們將使用深度優先搜尋 (DFS)。為了遍歷樹,我們將從根節點開始,然後檢查它是否為葉節點,如果是,則列印該節點,否則找到它的子樹,並遍歷子子樹以查詢所有葉節點。

示例

以下程式碼將實現我們的解決方案 -

  線上演示

#include <iostream>
using namespace std;
struct Node {
   int data;
   struct Node *left, *right;
};
Node* insertNode(int data) {
   Node *temp = new Node;
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
void printLTRLeafNodes(Node *root){
   if (!root)
      return;
   if (!root->left && !root->right) {
      cout<<root->data<<"\t";
      return;
   }
   if (root->left)
      printLTRLeafNodes(root->left);
   if (root->right)
      printLTRLeafNodes(root->right);
}
int main(){
   Node *root = insertNode(21);
   root->left = insertNode(5);
   root->right = insertNode(36);
   root->left->left = insertNode(2);
   root->right->left = insertNode(13);
   root->right->right = insertNode(4);
   root->right->left->left = insertNode(76);
   root->right->left->right = insertNode(9);
   root->right->right->left = insertNode(17);
   root->right->right->right = insertNode(2);
   cout<<"Leaf Nodes of the tree from left to rigth are :\n";
   printLTRLeafNodes(root);
   return 0;
}

輸出

Leaf Nodes of the tree from left to right are −
2 76 9 17 2

更新於: 2020 年 1 月 22 日

263 次瀏覽

開始你的 事業

完成課程並獲得認證

開始
廣告