題目:二叉樹和為某一值的路徑
描述:輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。
路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
延伸:若要求路徑不一定非得從二叉樹的根節點或葉節點開始或結束,求所有節點數值總和等於某個給定值的所有路徑。
找出二叉樹中所有滿足要求的路徑,基礎題要求該路徑從根節點開始,葉子節點結束,延伸題要求開始結束節點均可任意。
/*
* 題目:二叉樹和為某一值的路徑
* 描述:輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。
* 路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
*/#include #include #include #include using namespace std;
const int flag = int_min;
struct treenode
};class solution
void findpaths(treenode *root, int expectnumber, vectorpath, int curnumber, vector> &paths)
if (root->left)
findpaths(root->left, expectnumber, path, curnumber, paths);
if (root->right)
findpaths(root->right, expectnumber,path, curnumber, paths);
//否則,彈出當前節點,返回父節點
path.pop_back();
}};treenode *generatetree(vector&nums)
//定義非空右子樹
if (i + 1 < size && nums[i + 1] != flag)
tmp->left = left;
tmp->right = right;
//彈出當前處理的節點
que.pop();
} return root;
}int main()
; treenode *root = generatetree(v);
solution s;
vector> ret = s.findpath(root , 22);
for (size_t i = 0; i < ret.size(); ++i)
//for
cout << endl;
}//for
system("pause");
return 0;
}
二叉樹和為某一值的路徑
此題的路徑是從根到葉子節點,包含這兩個本身 class solution 返回二維列表,內部每個列表表示找到的路徑 def findpath self,root,expectnumber write code here 必須根到葉節點,包括根和葉子節點 前序遍歷非遞迴法 if root none r...
二叉樹為某一值的路徑
題目 輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。注意 在返回值的list中,陣列長度大的陣列靠前 思路 深度優先搜尋。使用前序遍歷,使用兩個全域性變數result和tmp,result來存放最終...
二叉樹的和為某一值的路徑
輸入一顆二叉樹的跟節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。利用深度優先搜尋遍歷所有的路徑,然後將路徑壓入vector 中,並返回。構造的樹 9 45 110 23 6 構造樹用前序和中序序列確定 前序 9,4,...