【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径

简介: 题目:给定一个二叉树要求打印出所有从根结点到叶子结点路径和为value的路径          例如,给定二叉树如下要求打印出所有和为9的路径,有1->6->3->-1和1->7->4->-3          分析:1.


题目:给定一个二叉树要求打印出所有从根结点到叶子结点路径和为value的路径

          例如,给定二叉树如下要求打印出所有和为9的路径,有1->6->3->-1和1->7->4->-3

          


分析:

1. 要找到所有的路径,利用前序遍历即可做到,我们维护一个数组保存路径上面的点,同时维护一个sum,当到达叶子结点的时候判断是否相等即可


2. 代码

//二叉树结点
struct BinaryTreeNode{
    int value;
    BinaryTreeNode *lson;
    BinaryTreeNode *rson;
}; 

//打印路径
void Print(int *path, int n){
    for(int i = 0; i < n; i++){
        cout<<path[i]<<" "; 
    }
    cout<<endl; 
} 

//打印和为k的所有路径
void PrintPath(BinaryTreeNode *root, int *path, int pos, int sum, int k){
    //不合法数据 
	if(path == NULL){
	    return;
    }
	//到底叶子结点 
	if(root == NULL){
	    //和为value就打印 
		if(sum == k){
            Print(path, pos);
        }
    }
    path[pos] = root->value;
    PrintPath(root->lson, path, pos+1, sum+root->value, k);
    PrintPath(root->rson, path, pos+1, sum+root->value, k);
} 


目录
相关文章
|
6月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
6月前
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
17_二叉树的所有路径
17_二叉树的所有路径
|
6月前
|
测试技术
【树】【图论】【树路径】【深度优先搜索】2867. 统计树中的合法路径数目
【树】【图论】【树路径】【深度优先搜索】2867. 统计树中的合法路径数目
|
6月前
|
C++
二叉树的所有路径(C++)
二叉树的所有路径(C++)
55 1
|
存储 C++
C++二叉树的所有路径
C++二叉树的所有路径
|
存储 算法
算法训练Day18|● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
算法训练Day18|● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
|
存储 前端开发 程序员
二叉树中和为某一值的路径
二叉树中和为某一值的路径
二叉树中和为某一值的路径
|
Java 测试技术
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。(Java语言实现)
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。(Java语言实现)
170 0
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。(Java语言实现)