剑指offer34.二叉树路径和 P182

mac2025-08-04  2

剑指offer34. 二叉树路径和 P182

题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

// 主递归函数参数: 当前节点 上一步路径和 期待值 路径存储数组

void DFS_FindPath(BinaryTreeNode *root, int sum, int k, vector<int> &path) { if (root == NULL || root -> m_nValue + sum > k) return ; // 当前路径和大于k,返回 path.push_back(root -> m_nValue); // 否则,把节点加入path if (root -> m_nValue + sum < k) { // 小于k,递归往下找, // 递归放在打印前就不用显示判断叶节点 DFS_FindPath(root -> m_pLeft, sum + root -> m_nValue, k, path); DFS_FindPath(root -> m_pRight, sum + root -> m_nValue, k, path); }else { // 等于k,打印路径path for (auto p : path) { printf("%d ", p); } printf("\n"); } path.pop_back(); // 回溯,把当前节点移除,继续找 }
最新回复(0)