用 C 语言编写程序,打印二叉树中位于最左和最右的节点。
给定一棵左、右节点存在且已知的二叉树,任务是打印出指定树的准确的右、左子节点。
最左节点是与树的父节点关联,位于其左侧的节点;最右节点是与根节点的父节点关联,位于其右侧的节点。
示例
Input: 106 20 320 100 21 61 52 Output: 106 20 320 100 52

算法
Start Step 1 -> create structure of a node Declare int data Declare struct node *left and *right Step 2 -> create struct node* newNode(int val) Create node* temp=new node Set temp->data = val Set temp->left = temp->right = NULL return (temp) step 3 -> Declare Function void print(node *root) IF root == NULL Return Use STL queue<node*> que Call que.push(root) Use STL vector<int> ans Loop While !que.empty() Set int n = que.size() Loop for int i =0 and i<n and i++ Set node *temp = que.front() Set que.pop() IF i=0 Set ans.push_back(temp->data) End Else IF i=n-1 Set ans.push_back(temp->data) End If temp->left Set que.push(temp->left) End IF temp->right Set que.push(temp->right) End End Loop For auto i : ans Print i End Step 4 -> In main() Declare node *root = newNode(106) to create a node Call print(root) stop
示例
#include <bits/stdc++.h>
using namespace std;
//structure of a node {
int data;
struct node* left, *right;
};
//structure to create a new node
struct node* newNode(int val){
node* temp = new node;
temp->data = val;
temp->left = temp->right = NULL;
return (temp);
}
//function to print corner elements of a tree
void print(node *root) {
if(root == NULL)
return;
queue<node*> que;
que.push(root);
vector<int> ans;
while(!que.empty()){
int n = que.size();
for(int i =0;i<n;i++){
node *temp = que.front();
que.pop();
if(i==0)
ans.push_back(temp->data);
else if(i==n-1)
ans.push_back(temp->data);
if(temp->left)
que.push(temp->left);
if(temp->right)
que.push(temp->right);
}
}
for(auto i : ans)
cout << i << " ";
}
int main (){
node *root = newNode(106);
root->left = newNode(20);
root->right = newNode(320);
root->left->left = newNode(100);
root->left->right = newNode(21);
root->right->left = newNode(61);
root->right->right = newNode(52);
print(root);
return 0;
}输出
如果我们运行上述程序,将生成以下输出
106 20 320 100 52
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP