C++中二叉树中序遍历的第N个节点
在这个问题中,我们给定一个二叉树和一个整数N。任务是找到二叉树中序遍历中的第n个节点。
一个二叉树有一个特殊条件,即每个节点最多可以有两个子节点。
遍历是一个访问树的所有节点并可能打印其值的过程。
让我们来看一个例子来理解这个问题:
输入
N = 6

输出
3
解释
inorder traversal of tree : 4, 2, 5, 1, 6, 3, 7
解决方案方法
这个想法是使用二叉树的中序遍历,这通过递归调用来完成。在每次调用中,我们将首先为左子树调用preOrder(),然后遍历根节点,最后调用preOrder()。在这个遍历过程中,我们将计数节点数,并打印计数为N的节点。
程序说明了我们解决方案的工作原理:
示例
#include <iostream>
using namespace std;
struct Node {
int data;
Node *left, *right;
};
struct Node* createNode(int item){
Node* temp = new Node;
temp->data = item;
temp->left = NULL;
temp->right = NULL;
return temp;
}
void findInOrderTraversalRec(struct Node* node, int N){
static int count = 0;
if (node == NULL)
return;
if (count <= N) {
findInOrderTraversalRec(node->left, N);
count++;
if (count == N)
cout<<node->data;
findInOrderTraversalRec(node->right, N);
}
}
int main() {
struct Node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
root->right->left = createNode(6);
root->right->right = createNode(7);
int N = 6;
cout<<N<<"th node in inorder traversal is ";
findInOrderTraversalRec(root, N);
return 0;
}输出
6th node in inorder traversal is 3
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP