以字串形式表示的樹中第 k 層節點的乘積 (C++)
給定一個以字串格式表示節點資料的樹,任務是找到二叉樹中第 k 層節點的乘積。樹的每個節點包含三個部分:資料部分、指向左子樹的左指標和指向右子樹的右指標。
二叉樹的層級從 0 開始,可以到任何正數 'n'。因此,給定層級 'k',程式必須計算給定 'k' 層節點的乘積。
例如,在二叉樹中,如果給定 k=2
則第 2 層的節點為 - 40, 50, 60
乘積 = 40 * 50 * 60 = 120000

輸入
(1(2(3()())(4()(5()())))(6(7()())(8()()))) K = 1
輸出
product of nodes at level k = 12
輸入
(0(5(6()())(4()(9()())))(7(1()())(3()())))" k = 2
輸出
product of nodes at level k = 72
演算法
Start
Step 1→ Declare function to calculate nodes at k-th level
int product(string tree, int k)
Declare int level = -1
Declare int product = 1
Declare int size = tree.length()
Loop For int i = 0 and i < size and i++
IF tree[i] = '('
Set level++
End
Else IF tree[i] = ')'
Set level—
End
Else
IF level = k
Set product *= (tree[i] - '0')
End
End
End
return product
Step 2→ In main()
Declare string tree = "(1(2(3()())(4()(5()())))(6(7()())(8()())))"
Declare int k = 1
Call product(tree, k)
Stop示例
#include <bits/stdc++.h>
using namespace std;
//finding product at kth level
int product(string tree, int k){
int level = -1;
int product = 1;
int size = tree.length();
for (int i = 0; i < size; i++){
if (tree[i] == '(')
level++;
else if (tree[i] == ')')
level--;
else{
if (level == k)
product *= (tree[i] - '0');
}
}
return product;
}
int main(){
string tree = "(1(2(3()())(4()(5()())))(6(7()())(8()())))";
int k = 1;
cout <<"product of nodes at level k = "<<product(tree, k);
return 0;
}輸出
執行以上程式碼將生成以下輸出:
product of nodes at level k = 12
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP