代码随想录刷题——二叉树篇(九)

257. 二叉树的所有路径
迭代+回溯:

cpp 复制代码
class Solution{
public:
	void traversal(TreeNode* node,vector<int>& path,vector<string>& ans){
		path.push_back(node->val);
		if(!node->left&&!node->right){
			string sPath;
			for(int i=0;i<path.size()-1;i++){
				sPath += to_string(path[i]);
				sPath += "->";
			}
			sPath += to_string(path[path.size()-1]);
			ans.push_back(sPath);
		}
		if(node->left){
			traversal(node->left,path,ans);
			path.pop_back();
		}
		if(node->right){
			traversal(node->right,path,ans);
			path.pop_back();
		}
		return ;
	} 
	vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> ans;
        vector<int> path;
		if(!root) return ans;
		traversal(root,path,ans);
		return ans;
    }
};

迭代+回溯:

cpp 复制代码
class Solution{
public:
	vector<string> binaryTreePaths(TreeNode* root){
		vector<string> ans;
		if(!root) return ans;
		queue<TreeNode*> qu;
		queue<string> qs;
		qu.push(root);
		qs.push(to_string(root->val));
		while(!qu.empty()){
			TreeNode* node=qu.front();
			qu.pop();
			string path=qs.front();
			qs.pop();
			if(!node->left&&!node->right){
				ans.push_back(path);
			} 
			if(node->right){
				qu.push(node->right);
				qs.push(path+"->"+to_string(node->right->val));
			}
			if(node->left){
				qu.push(node->left);
				qs.push(path+"->"+to_string(node->left->val));
			}
		}
		return ans;
	}
};

其他:

(1)递归新理解:想象一棵如下图所示的树,从NULL开始,分三种情况 向上分别思考。考虑终止处理逻辑出现在哪一层,以及需要的处理逻辑是什么样的。因为红框框起来的三个节点代表了递归中的三种情况:一是空节点,二是叶子节点,三是连接叶子节点的节点

这样的好处在于,三种节点的情况由简单复杂 ,同时也是递归本身的总体顺序(从下往上),便于理清递归的整体逻辑。

(3)递归和回溯:

a.递归和回溯要在一起

b.递归和回溯时,共享变量 就像是记录情况的进度条,有增有减

(4)迭代和回溯:

a.只要是回溯 ,就应该有记录情况的进度条

b.迭代时的回溯更像是复制了多次备份

迭代法这里用于遍历的容器适配器 必须和用于存储string的容器适配器一致,如果一个是queue、另一个是stack,顺序就不对了

(5)to_string()的使用

相关推荐
爱刷碗的苏泓舒6 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽9 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米9 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠9 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA11 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel11 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客11 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化
风栖柳白杨12 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
闪电悠米13 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵
栋***t13 小时前
从“纸质试卷”到“AI智能组卷”,麦塔在线考试系统如何重构出题逻辑?
java·大数据·人工智能·算法·重构