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
結論
如果您在本教程中有任何疑問,請在評論部分提出。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP