61. Binary Tree Inorder Traversal
2024-09-06 18:58:18
- Binary Tree Inorder Traversal My Submissions QuestionEditorial Solution
Total Accepted: 123484 Total Submissions: 310732 Difficulty: Medium
Given a binary tree, return the inorder traversal of its nodes’ values.
For example:
Given binary tree {1,#,2,3},
1
\
2
/
3
return [1,3,2].
Note: Recursive solution is trivial, could you do it iteratively?
思路:1.递归
2.迭代
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> v;
if(root==NULL)return v;
vector<int> vl,vr;
vl = inorderTraversal(root->left);
v.push_back(root->val);
vr = inorderTraversal(root->right);
int n = vl.size()+v.size()+vr.size();
vector<int> res(n);
copy(vl.begin(),vl.end(),res.begin());
copy(v.begin(),v.end(),res.begin()+vl.size());
copy(vr.begin(),vr.end(),res.begin()+vl.size()+v.size());
return res;
}
};
以下是迭代方法,多练习以写出一个精简的迭代代码
思路找到左线压入栈,自底向上访问,有右子树的节点跳至右子树重复
上述过程。
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> v;
stack<TreeNode*> st;
while(root||!st.empty()){//第一个处理root情况
while(root!=NULL){ //一直找到最左下角,没有的话后面弹出该元素值
st.push(root);
root = root->left;
}
root = st.top();
st.pop();
v.push_back(root->val);//弹出值,转至右子树
root = root->right;
}
return v;
}
};
最新文章
- Java中static的理解
- JQuery知识点链接
- JavaScript笔试必备语句
- 主机访问虚拟机中linux上的web服务
- Java 并发同步器之CountDownLatch、CyclicBarrier
- 新闻类App使用的组件
- USB HID usage table
- SDUT 1570 C 旅行(DFS)
- SPL的基本使用
- 转-——推荐几个web中常用的一些js图表插件 - zccst
- Pi
- 一个基于DpperHelper的t4模板
- dedecms内容页调用图片集文档的图集图片
- Rich feature hierarchies for accurate object detection and semantic segmentation(理解)
- Linux脚本shell字符串处理
- 记一次IDEA编译器调优
- 判断素数(翁凯男神MOOC)
- java collection和Iterator
- Windows下同一台机器上elasticsearch集群的配置以及elasticsearch-head插件的使用
- ES6新特性4:字符串的扩展
热门文章
- 【二食堂】Alpha- 发布声明
- 简明教程 | Docker篇 &#183; 其一:基础入门
- Noip模拟5 2021.6.7
- [火星补锅] 非确定性有穷状态决策自动机练习题Vol.1 T3 第K大区间 题解
- 零基础学习Linux心得总结
- 平衡二叉树检查 牛客网 程序员面试金典 C++ Python
- CSS学习笔记:浮动属性
- pl/sql 远程连接oracle数据库问题(TNS:丢失连接)
- Go语言实现APPID登录
- LeetCode-40. 组合总和 II C++(回溯法)