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