列印帶有指定和的從 C++ 中二叉樹的根到任何路徑
在這個問題中,我們得到一個二叉樹和一個和 S。我們必須從根節點到該樹的任何節點找到一條路徑,該路徑中所有節點的和等於給定的和。
輸入

Sum = 14 Output : path : 4 10 4 3 7
要找到解決這個問題的方法,我們需要找到二叉樹的前序遍歷。然後找到等於給定和的路徑。
例子
#include<bits/stdc++.h>
using namespace std;
struct Node{
int key;
struct Node *left, *right;
};
Node* insertNode(int key){
Node* temp = new Node;
temp->key = key;
temp->left = temp->right = NULL;
return (temp);
}
void printPathsUtilSum(Node* curr_node, int sum, int
sum_so_far, vector<int> &path){
if (curr_node == NULL)
return;
sum_so_far += curr_node->key;
path.push_back(curr_node->key);
if (sum_so_far == sum ){
for (int i=0; i<path.size(); i++)
cout<<path[i]<<"\t";
cout<<endl;
}
if (curr_node->left != NULL)
printPathsUtilSum(curr_node->left, sum,
sum_so_far, path);
if (curr_node->right != NULL)
printPathsUtilSum(curr_node->right, sum,
sum_so_far, path);
path.pop_back();
}
void pathWithSum(Node *root, int sum){
vector<int> path;
printPathsUtilSum(root, sum, 0, path);
}
int main (){
Node *root = insertNode(4);
root->left = insertNode(10);
root->right = insertNode(3);
root->right->left = insertNode(7);
root->right->right = insertNode(1);
root->left->left = insertNode(8);
root->left->right = insertNode(6);
int sum = 14;
cout<<"Paths with the given sum are : "<<endl;
pathWithSum(root, sum);
return 0;
}輸出
和為給定和的路徑有 −
4 10 4 3 7
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP