使用 C++ 中的迭代法,從左到右列印二叉樹中所有葉節點
在此示例中,我們得到了一個二叉樹,我們需要使用迭代法從左到右列印二叉樹的所有葉節點。
我們來舉個例子來理解這個問題
輸入 -
輸出 - 1 4 7
為了使用迭代法解決這個問題,我們將使用深度優先搜尋 (DFS)。為了遍歷樹,我們將從根節點開始,然後檢查它是否為葉節點,如果是,則列印該節點,否則找到它的子樹,並遍歷子子樹以查詢所有葉節點。
示例
以下程式碼將實現我們的解決方案 -
#include <iostream> using namespace std; struct Node { int data; struct Node *left, *right; }; Node* insertNode(int data) { Node *temp = new Node; temp->data = data; temp->left = temp->right = NULL; return temp; } void printLTRLeafNodes(Node *root){ if (!root) return; if (!root->left && !root->right) { cout<<root->data<<"\t"; return; } if (root->left) printLTRLeafNodes(root->left); if (root->right) printLTRLeafNodes(root->right); } int main(){ Node *root = insertNode(21); root->left = insertNode(5); root->right = insertNode(36); root->left->left = insertNode(2); root->right->left = insertNode(13); root->right->right = insertNode(4); root->right->left->left = insertNode(76); root->right->left->right = insertNode(9); root->right->right->left = insertNode(17); root->right->right->right = insertNode(2); cout<<"Leaf Nodes of the tree from left to rigth are :\n"; printLTRLeafNodes(root); return 0; }
輸出
Leaf Nodes of the tree from left to right are − 2 76 9 17 2
廣告