用 C++ 列印二叉樹中給定節點的祖先
在這個問題中,我們給定了一個二叉樹,我們必須列印其在二叉樹中的某個節點的祖先。
二叉樹是一種特殊樹,其每個節點最多有兩個子節點。因此,每個節點要麼是葉節點,要麼有一個或兩個子節點。
例如,
二叉樹中某個節點的祖先是在給定節點上層的某個節點。
讓我們舉一個祖先節點的示例 −
此二叉樹中值為 3 的節點的祖先是 8,
要解決這個問題,我們將從根節點遍歷到目標節點。在二叉樹中逐層向下。並且在路徑中打印出現的所有的節點。
示例
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; struct node{ int data; struct node* left; struct node* right; }; bool AncestorsNodes(struct node *root, int target){ if (root == NULL) return false; if (root->data == target) return true; if ( AncestorsNodes(root->left, target) || AncestorsNodes(root->right, target) ){ cout << root->data << " "; return true; } return false; } struct node* insertNode(int data){ struct node* node = (struct node*) malloc(sizeof(struct node)); node->data = data; node->left = NULL; node->right = NULL; return(node); } int main(){ struct node *root = insertNode(10); root->left = insertNode(6); root->right = insertNode(13); root->left->left = insertNode(3); root->left->right = insertNode(8); root->right->left = insertNode(12); cout<<"Ancestor Nodes are " ; AncestorsNodes(root, 8); getchar(); return 0; }
輸出
Ancestor Nodes are 6 10
廣告