C++程式中二叉樹最深奇數層節點的深度
在本教程中,我們將學習如何在二叉樹中查詢最深的奇數層節點。
這類似於查詢二叉樹的深度。這裡,我們還有一個條件,即當前層是否是奇數。
讓我們看看解決問題的步驟。
用虛擬資料初始化二叉樹。
編寫一個遞迴函式來查詢二叉樹中最深的奇數層節點。
如果當前節點是葉子節點並且層數為奇數,則返回當前層數。
否則,返回左節點和右節點使用遞迴函式呼叫的最大值。
列印最深的奇數層節點。
示例
讓我們看看程式碼。
#include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node *left, *right; }; struct Node* newNode(int data) { struct Node* node = (struct Node*) malloc(sizeof(struct Node)); node->data = data; node->left = node->right = NULL; return node; } int oddLeafDepthInTree(struct Node *root, int level) { if (root == NULL) { return 0; } if (root->left == NULL && root->right == NULL && level % 2 == 1) { return level; } return max(oddLeafDepthInTree(root->left, level + 1), oddLeafDepthInTree(root->right, level + 1)); } int main() { struct Node* root = newNode(1); root->left = newNode(2); root->right = newNode(3); root->left->left = newNode(4); root->right->left = newNode(5); root->right->right = newNode(6); root->right->left->right = newNode(7); root->right->right->right = newNode(8); int level = 1, depth = 0; cout << oddLeafDepthInTree(root, level) << endl; return 0; }
輸出
如果執行上述程式碼,則會得到以下結果。
3
結論
如果您在本教程中有任何疑問,請在評論部分提出。
廣告