輸入乙個整數k和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。列印出和與輸入整數相等的所有路徑。
例如輸入整數22和如下二元樹
10
/ \
5 12
/ \
4 7
則列印出兩條路徑:10,12和10, 5,7。
①構造二叉樹,這裡只定義了乙個簡易的節點struct:binarytreenode,二叉樹的完整定義後續會再發文。。
②前序遍歷,疊加路徑上每個節點的data值,若等於k,則輸出路徑
值得注意的是,需要乙個棧來記錄走過的路徑,這個棧的定義中,需要擴充乙個方法output(),用來自棧底輸出所有元素
擴充的堆疊stack.h
考慮到通用程式設計,採用模板
#pragma once
#includeusing namespace std;
templateclass stack
bool isempty()const
bool isfull()const
t top()const;
stack&push(const t&x);
stack&pop(t&x);
void output()const;
private:
int top;
int maxtop;
t*stack;
};templatestack::stack(int maxstacksize)
templatet stack::top()const
templatestack& stack::push(const t& x)
templatestack& stack::pop(t& x)
templatevoid stack::output()const
main.cpp
#pragma once
#include#include"stack.h"
using namespace std;
struct binarytreenode
;//查詢和為k的路徑
void prefind(binarytreenode* t,int& sum,stack& stack,int k)
prefind(t -> left,sum,stack,k);
prefind(t->right, sum, stack, k);
stack.pop(t->data);
sum -= t->data; }}
void main()
在二元樹中找出和為某一值的所有路徑
4.在二元樹中找出和為某一值的所有路徑 題目 輸入乙個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。列印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹 10 5 12 4 7則列印出兩條路徑 10,12和10,5,7。c codes as belo...
在二元樹中找出和為某一值的所有路徑
題目 輸入乙個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。列印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹 10 5 12 4 7 則列印出兩條路徑 10,12和10,5,7。此方法用了雙向鍊錶來儲存路徑,當然也可以用容器vector來構造佇列...
在二元樹中找出和為某一值的所有路徑
1.題目 在二元樹中找出和為某一值的所有路徑 題目 輸入乙個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。列印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹 10 5 12 4 7則列印出兩條路徑 10,12和10,5,7。二元樹節點的資料結構定義...