【leetcode】Binary Tree Inorder Traversal
来源:互联网 发布:qq找回密码软件 编辑:程序博客网 时间:2024/05/06 09:53
Question :
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?
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
Anwser 1 :
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int> inorderTraversal(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> result(0); if (root == NULL) return result; stack<TreeNode *> S; TreeNode* p = root; do { if (p != NULL) { S.push(p); p = p->left; } else { p = S.top(); S.pop(); result.push_back(p->val); p = p->right; } }while(!S.empty() || p != NULL); return result; }};
Anwser 2 :
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: void dfs(TreeNode *p, vector<int> &result) { if(p->left != NULL) dfs(p->left, result); result.push_back(p->val); if(p->right!=NULL) dfs(p->right, result); } vector<int> inorderTraversal(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function TreeNode * head = root; vector<int> result; result.clear(); if(head!=NULL) { dfs(head, result); } return result; }};
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int> inorderTraversal(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> result; result.clear(); stack<TreeNode *> stack_in; stack<TreeNode *> stack_out; if(root == NULL) return result; stack_in.push(root); while(!stack_in.empty()) { TreeNode *node_in = stack_in.top(); stack_in.pop(); stack_out.push(node_in); if(node_in->right!=NULL && node_in->left!=NULL) { stack_in.push(node_in->right); stack_in.push(node_in->left); } else if(node_in->left!=NULL && node_in->right==NULL) { stack_in.push(node_in->left); } else if(node_in->left==NULL && node_in->right!=NULL) { stack_in.push(node_in->right); result.push_back(node_in->val); stack_out.pop(); } else { result.push_back(node_in->val); stack_out.pop(); while(!stack_out.empty()) { TreeNode * tmp = stack_out.top(); stack_out.pop(); result.push_back(tmp->val); if(tmp->right!=NULL) break; } } } return result; }};
参考推荐:
Binary Tree Inorder Traversal
- LeetCode: Binary Tree Inorder Traversal
- [LeetCode]Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- Leetcode: Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- LeetCode : Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- 【leetcode】Binary Tree Inorder Traversal
- [LeetCode]Binary Tree Inorder Traversal
- Leetcode: Binary Tree Inorder Traversal
- [leetcode]Binary Tree Inorder Traversal
- LeetCode-Binary Tree Inorder Traversal
- Leetcode Binary Tree Inorder Traversal
- [leetcode] Binary Tree Inorder Traversal
- LeetCode - Binary Tree Inorder Traversal
- [LeetCode] Binary Tree Inorder Traversal
- LeetCode | Binary Tree Inorder Traversal
- 14、glGenerateMipmap ,glTexParameter ,glTexImage2D
- 二十20,高兴高兴高兴
- Server.MapPath()
- PE 结构详解4 区块表定义及属性
- waitpid() 做人要厚道
- 【leetcode】Binary Tree Inorder Traversal
- 命令行启动mysql服务
- 15、OpenGL ES 2.0 Shader相关介绍
- Visual C#常用函数和方法集汇总
- 数组,指针解析
- JSP中的两种包含页面的方法
- 机房收费系统之模版方法使用
- 8255A编程基础
- Allwinner Unpacking and building LiveSuit images