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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP