Tree[0]
来源:互联网 发布:北京青少年行知园地图 编辑:程序博客网 时间:2024/06/06 09:25
Tree Traversal – preorder
recursive
class Solution {public: vector<int> preorderTraversal(TreeNode *root) { vector<int> rs; visit(rs, root); return rs; } void visit(vector<int> &rs, TreeNode *root) { if (root == NULL) return; rs.push_back(root->val); visit(rs, root->left); visit(rs, root->right); }};
iterative
class Solution {public: vector<int> preorderTraversal(TreeNode *root) { vector<int> rs; if (!root) return rs; stack<TreeNode*> st; st.push(root); while(!st.empty()) { TreeNode *node = st.top(); st.pop(); rs.push_back(node->val); if (node->right) st.push(node->right); if (node->left) st.push(node->left); } return rs; }};
Tree Traversal – inorder
iterative
thoughts:
- Create an empty stack S.
- Initialize current node as root
- Push the current node to S and set current = current->left until current is NULL
If current is NULL and stack is not empty then
a) Pop the top item from stack.
b) Print the popped item, set current = popped_item->right
c) Go to step 3.If current is NULL and stack is empty then we are done.
class Solution {public: vector<int> inorderTraversal(TreeNode *root) { /* * 处理完左子树,处理根节点,然后处理右子树 */ vector<int> rs; if (!root) return rs; stack<TreeNode *> st; st.push(root); TreeNode *p = root->left; //当前要处理的节点 while (!st.empty() || p != NULL) { if (p != NULL) { st.push(p); p = p->left; } else { TreeNode *top = st.top(); st.pop(); rs.push_back(top->val); p = top->right; } } return rs; }};
Tree Traversal – postorder
iterative
class Solution {public: vector<int> postorderTraversal(TreeNode *root) { vector<int> rs; if (!root) return rs; stack<TreeNode *> s1; stack<TreeNode *> s2; s1.push(root); while (!s1.empty()) { TreeNode *node = s1.top(); s1.pop(); s2.push(node); if (node->left) s1.push(node->left); if (node->right) s1.push(node->right); } while(!s2.empty()) { rs.push_back(s2.top()->val); s2.pop(); } return rs; }};
0 0
- Tree[0]
- struts2.0 tree
- [Algorithm][Tree-Search][0]
- Tree
- tree
- tree
- TREE
- Tree
- Tree
- tree
- tree
- tree
- tree
- tree
- tree
- Tree
- Tree
- tree
- Swift 的函数式编程
- HttpClient学习资料
- 可变长的数组
- 第一周项目2 计算长方体的表面积和表面积
- 在iOS8创建一个交互性强的本地通知
- Tree[0]
- 记录用drawable.xml 绘制配置图整理
- android数据的持久化Shared Preferences
- 服务—Android
- 越来越吃香的BA职位,是什么回事?
- 【Log】Log4j以及commons-logging使用
- java动态代理初探
- Oracle使用JDBC进行增删改查
- Java NIO系列教程(八) SocketChannel