面試題25二叉樹中和為某一值的路徑

2021-07-04 20:06:11 字數 1105 閱讀 2507

面試題25二叉樹中和為某一值的路徑 

思路:設立乙個vectorpath 記錄路徑,定義乙個static int sum 累加和。先序遍歷二叉樹一直累加根結點到葉子結點的值,當結點是葉子結點同時和為指定值時輸出路徑

#include#include#include#include#include#includeusing namespace std;

//面試題25二叉樹中和為某一值的路徑 思路:設立乙個vectorpath 記錄路徑,定義乙個static int sum 累加和。先序遍歷二叉樹一直累加根結點到葉子結點的值,當結點是葉子結點同時和為指定值時輸出路徑

typedef struct binarytreenode

binarytreenode;

void findpath(binarytreenode*proot,int expectedsum,vector&path)

static int sum=0;

sum+=proot->data;

path.push_back(proot->data);

bool isleaf=(proot->left==null)&&(proot->right==null);

if(isleaf&&(sum==expectedsum))//節點為葉子結點同時路徑和為指定值

if(proot->right!=null)

sum-=proot->data;//此處勿忘

path.pop_back();//此處勿忘

}void createbinarytree(binarytreenode**proot)//從控制台中讀入字串 字元之間用逗號隔開

面試題25 二叉樹中和為某一值的路徑

輸入一棵二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。從根的根結點開始往下一直到葉節點 所經過的結點形成一條路徑。include include using namespace std 二叉樹結點定義 struct binarytreenode 建立二叉樹結點 binarytree...

面試題25 二叉樹中和為某一值的路徑

以先序的方式構建二叉樹,輸入 表示結點為空 void createbinarytree binarytreenode proot else void printinorder binarytreenode proot int tmain intargc,tchar argv 說明 用vector模擬...

面試題25 二叉樹中和為某一值的路徑

輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。演算法思路 先序遍歷二叉樹,並用乙個vector模擬乙個棧,記錄路徑,將訪問過的結點的值放入,遍歷的時候先計算當前路徑上結點值的總和,並將結點的值放入vecto...