二叉树路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树路径相关的知识,希望对你有一定的参考价值。
参考技术A给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
叶子节点 是指没有子节点的节点。
递归
没有写成以下是因为,二叉树为空需要返回false
迭代
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
示例:
递归
迭代
给定一个二叉树,它的每个结点都存放着一个整数值。
找出路径和等于给定数值的路径总数。
路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。
示例:
方法一:两个DFS
先序遍历每一个结点,以每一个结点作为根寻找满足和的路径
方法二:前缀和
如果前缀总和currSum,在节点A和节点B处相差target,则位于节点A和节点B之间的元素之和是target
给定一个 非空 二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。
示例 1:
示例 2:
每走到一个结点,有三个选择:
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
递归
迭代
480 二叉树的所有路径
原题网址:https://www.lintcode.com/problem/binary-tree-paths/description
描述
给一棵二叉树,找出从根节点到叶子节点的所有路径。
样例
给出下面这棵二叉树:
1
/ 2 3
5
所有根到叶子的路径为:
[ "1->2->5", "1->3" ]
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: the root of the binary tree
* @return: all root-to-leaf paths
*/
vector<string> binaryTreePaths(TreeNode * root) {
// write your code here
vector<string> result;
if (root==NULL)
{
return result;
}
string s="";
int2str(root->val,s);
if (root->left==NULL&&root->right==NULL)
{
result.push_back(s);
return result;
}
if (root->left)
{
tra(result,s,root->left);
}
if (root->right)
{
tra(result,s,root->right);
}
return result;
}
void tra(vector<string> &result,string s,TreeNode * root)//s不需要定义成引用类型,不需要保存其上一步结果,因为二叉树向下递归时s值自然累加节点值;
{
string tmp;
int2str(root->val,tmp);
s=s+"->"+tmp;
if (root->left==NULL&&root->right==NULL)
{
result.push_back(s);
return ;
}
if (root->left)
{
tra(result,s,root->left);
}
if (root->right)
{
tra(result,s,root->right);
}
}
void int2str(const int &int_tmp,string &string_tmp)
{
stringstream s;
s<<int_tmp;
string_tmp=s.str();//或者 s>>string_tmp;
}
};
以上是关于二叉树路径的主要内容,如果未能解决你的问题,请参考以下文章