网站建设平台软件哪个好用,重庆建设工程质量检测,如何优化网站提高排名,ordown wordpress难度#xff1a; 中等通过率#xff1a; 49.5%题目链接#xff1a;. - 力扣#xff08;LeetCode#xff09;
题目描述
给定一个二叉树#xff0c;返回它的 前序 遍历。 示例:
输入: [1,null,2,3] 1\2/3 输出: [1,2,3]进阶: 递归算法很简单#xff0c;你可以通过迭代…难度 中等通过率 49.5%题目链接. - 力扣LeetCode
题目描述
给定一个二叉树返回它的 前序 遍历。 示例:
输入: [1,null,2,3] 1\2/3 输出: [1,2,3]进阶: 递归算法很简单你可以通过迭代算法完成吗
递归解法
class Solution {public:vectorint inorderTraversal(TreeNode* root){vectorint res;traversal(root, res);return res;}void traversal(TreeNode *node, vectorint res) {if (!node){return;}res.push_back(node-val);traversal(node-left, res);traversal(node-right, res);}
};基于栈的解法
观察递归解法递归调用的第一层就访问 node-val而后遍历 node-left而 node-right 是保存在调用栈上的因此在迭代的写法中需要将 node-right 保存在栈里。
class Solution {public:vectorint preorderTraversal(TreeNode *root) {vectorint res;stackTreeNode* stk;if(root){stk.push(root);}while(!stk.empty()){TreeNode *node stk.top();stk.pop();while(node){res.push_back(node-val);if(node-right){stk.push(node-right);}node node-left;}}return res;}
};