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.