首页 > 其他分享 >《剑指Offer》-34-二叉树中和为某一值的路径

《剑指Offer》-34-二叉树中和为某一值的路径

时间:2023-09-19 19:14:46浏览次数:52  
标签:target temp res 34 vector 二叉树 root 一值 val

思路

要求是从根节点开始的路径,这会比从任意节点开始的路径简单很多

思路是从根节点开始遍历每一条路径,如果和没有达到目标值就继续向下遍历
大于就回退,等于就返回到结果集中,可以看到这是一个回溯动作

实际过程中,首先不管是等于还是大于,回退pop()操作都要执行,这样才不会影响到后面

其次,这里要求必须到叶子节点的路径,如果不是叶子节点就不算

最后这里可能出现负数,所以就不能说大于了,去掉剪枝

	vector<vector<int>> pathSum(TreeNode* root, int target) {
		vector<vector<int>> res;
		vector<int> temp;
		backTrace(root, target, res, temp);
		return res;
	}

	void backTrace(TreeNode* root, int target, vector<vector<int>>& res, vector<int>& temp) {
		if (!root) return;
		temp.push_back(root->val);
		if (root->val == target && !root->left && !root->right) res.push_back(temp);
		else {
			backTrace(root->left, target-root->val, res, temp);
			backTrace(root->right, target-root->val, res, temp);
		}
		temp.pop_back();
	}

标签:target,temp,res,34,vector,二叉树,root,一值,val
From: https://www.cnblogs.com/yaocy/p/17715525.html

相关文章

  • 114. 二叉树展开为链表
    给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。示例1:输入:root=[1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,......
  • 剑指Offer面试题7:重建二叉树
    一、题目给定节点数为n的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.vin.length== pre.length2.pre和vin 均无重复元素3.vin出现的元素均出现在 ......
  • 12340政策是好的,怎奈外包糊弄事
     接起来12340,自动播放音乐1分钟,自动挂断。          首页时政要闻国内思想经济科教旅游城事独家本土北国风光地方联播草原足球音视图文明网学习网内蒙古好故事预决算公示您当前的位置: 内蒙古新闻网  >  新闻中心  >  要闻......
  • 543. 二叉树的直径
    给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。两节点之间路径的长度由它们之间边数表示。输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或[5,2,1,3]的长度。......
  • 代码随想录算法训练营day13| ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结
    239.滑动窗口最大值mydemo--(自己思路)--failed超出时间限制classSolution{public:vector<int>maxSlidingWindow(vector<int>&nums,intk){vector<int>result;stack<int>stack;intlen=nums.size();for(......
  • 平衡二叉树的平衡机制
    1.什么是平衡二叉树,就是任意节点的左右子树的层数之差不超过1.前提它是一个二叉树。 2.一个平衡二叉树,在以下4种情况下,会破坏平衡(为啥要知道4种基本的情况,因为跟左旋和右旋的息息相关)。 2.1根节点--->左子树--->左子节点。增加节点操作。简称左左。 2.2根节点--->左子树-......
  • leetcode 二叉树的最小深度
    给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例1:输入:root=[3,9,20,null,null,15,7]输出:2示例2:输入:root=[2,null,3,null,4,null,5,null,6]输出:5解题思路如果当前节点为null,返......
  • leetcode 平衡二叉树
    给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例1:输入:root=[3,9,20,null,null,15,7]输出:true示例2:输入:root=[1,2,2,3,3,null,null,4,4]输出:false示例3:输入:root......
  • 34-(无33)列表-元素的5种添加方式-效率问题
     尽量不要在中间增加,会降低运行效率   扩展的意思,原地扩展,原地操作,不增加新的变量,运算快,性能好  写错了      其实对插入后的后面的字符进行了拷贝,影响处理速度!只要不是在尾部操作,即中间操作的,尽量避免!  ......
  • BZOJ 3451
    题目链接description厉害题。给定一棵树,按照题面要求求一个错误点分治的期望执行次数。(不想描述题面了qwq)solution考虑拆开计算每个点期望几层点分治后被删除。这个期望值显然就是它对答案的贡献。我们不妨以这个点为根,那么相当于要求每次删除一个未被删除的点的子树,求删完......