二叉树中和为某一值的路径
二叉树 路径
2023-09-27 14:26:30 时间
输入一颗二叉树和一个整数,打印出二叉中节点值的和为输入整数的所有路径。
输入 :BinaryTreeNode * root, int value;
输出: 和为value的路径上所有值创建二叉树
创建二叉树
class BinaryTreeNode
{
public:
BinaryTreeNode* left;
BinaryTreeNode* right;
int value;
};
//创建二叉树节点
BinaryTreeNode* connectNode(BinaryTreeNode* root, BinaryTreeNode* left, BinaryTreeNode* right)
{
root->left = left;
root->right = right;
return root;
}
//连接二叉树节点
BinaryTreeNode* createNode(int value)
{
BinaryTreeNode* node = new BinaryTreeNode();
node->value = value;
node->left = NULL;
node->right = NULL;
return node;
}
实现问题的函数
void FindPath(BinaryTreeNode* root, int expSum, int currentSum, vector<int>path)
{
path.push_back(root->value);
currentSum += root->value;
bool isleaf = (root->left == NULL&&root->right == NULL);
if (currentSum == expSum&&isleaf == true)
{
for (vector<int>::iterator iter = path.begin(); iter != path.end(); iter++)
{
cout << *iter << " ";
}
cout << endl;
}
if (root->left != NULL)FindPath(root->left, expSum, currentSum, path);
if (root->right != NULL)FindPath(root->right, expSum, currentSum, path);
path.pop_back();
}
void FindPath(int expSum, BinaryTreeNode* root)
{
if (root == NULL)return;
int currentsum = 0;
vector<int> path;
FindPath(root,expSum,currentsum,path);
}
相关文章
- 打印二叉树两个叶子节点间的路径
- 求二叉树中,任意两个节点之间的距离最大值是多少
- 二叉树的先序、中序和后序遍历
- 将顺序结构打印成完全二叉树
- 由前序遍历和中序遍历构建二叉树-Python
- 二叉树中的最大路径和-Python
- [第十届蓝桥杯省赛C++A/B组]完全二叉树的权值
- 剑指offer解法汇总84-二叉树中和为某一值的路径(三)
- 剑指offer编程题解法汇总24-二叉树中和为某一值的路径
- 数据结构 | 二叉树的一些性质及证明、树的路径长度、结点的路径长度
- 【二叉树】
- 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表
- 101、【树与二叉树】leetcode ——617. 合并二叉树:递归法+迭代法(C++版本)
- 96、【树与二叉树】leetcode ——404. 左叶子之和:递归法[先序+后序]+迭代法[先序+层次](C++版本)
- 2022&2023华为OD机试 - 二叉树层次遍历(Python)
- 第3章 结构之法——重建二叉树
- 二叉树的基本运算
- 【剑指offer】Q25:二叉树中和为某一值的路径
- Java开发 - 树(二叉树,二叉排序树,红黑树)
- [LeetCode] 1104. Path In Zigzag Labelled Binary Tree 之字形二叉树路径
- [LeetCode] Binary Tree Tilt 二叉树的坡度
- [LeetCode] 437. Path Sum III 二叉树的路径和之三
- [LeetCode] 112. Path Sum 二叉树的路径和