C++列印二叉樹的所有內部節點


在這個問題中,我們給定一棵二叉樹,需要打印出二叉樹的所有內部節點。

二叉樹是一種樹,其中每個節點最多可以有兩個子節點。節點或頂點可以沒有子節點,一個子節點或兩個子節點。

示例

內部節點是指至少有一個子節點的節點,即非葉子節點是內部節點。

讓我們來看一個例子來理解這個問題−

輸出− 7 4 9

為了解決這個問題,我們將使用BFS(廣度優先搜尋)遍歷二叉樹。

在遍歷過程中,我們將節點壓入佇列。當我們從佇列中彈出元素時,我們將列印樹中所有沒有任何子節點的節點。

示例

我們的邏輯由以下程式碼實現:

 線上演示

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node *left, *right;
   Node(int data){
      left = right = NULL;
      this->data = data;
   }
};
void printNonLeafNodes(Node* root) {
   queue<Node*> treeNodes;
   treeNodes.push(root);
   while (!treeNodes.empty()) {
      Node* curr = treeNodes.front();
      treeNodes.pop();
      bool isInternal = 0;
      if (curr->left) {
         isInternal = 1;
         treeNodes.push(curr->left);
      }
      if (curr->right) {
         isInternal = 1;
         treeNodes.push(curr->right);
      }
      if (isInternal)
         cout<<curr->data<<"\t";
   }
}
int main() {
   Node* root = new Node(43);
   root->left = new Node(12);
   root->right = new Node(78);
   root->left->left = new Node(4);
   root->right->left = new Node(9);
   root->right->right = new Node(1);
   root->right->right->right = new Node(50);
   root->right->right->left = new Node(25);
   cout<<"All internal Nodes of the binary tree are :\n";
   printNonLeafNodes(root);
   return 0;
}

輸出

All internal Nodes of the binary tree are −
43 12 78 1

更新於:2020年1月22日

2K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.