Binary Tree Inorder Traversal——二叉树的中序遍历
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Binary Tree Inorder Traversal——二叉树的中序遍历,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2137字,纯文字阅读大概需要4分钟。
内容图文
![Binary Tree Inorder Traversal——二叉树的中序遍历](/upload/InfoBanner/zyjiaocheng/1086/eef50bbaf5994c64805161367b8307d5.jpg)
原题:
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]
.
=>返回[1,3,2]
Note: Recursive solution is trivial, could you do it iteratively?
=>递归的算法很简单,能否不递归实现?
/** * 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) { } };
晓东解析:
这个题目和之前的先序遍历以及后序遍历是一样的,就不多做解释了,见相应的博文:http://blog.csdn.net/u011960402/article/details/14517135以及http://blog.csdn.net/u011960402/article/details/15499903。
代码实现:
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) { vector<int> result; vector<int> left; vector<int> right; if(NULL == root) return result; left = inorderTraversal(root->left); if(left.size() != 0) result.insert(result.end(), left.begin(), left.end()); result.push_back(root->val); right = inorderTraversal(root->right); if(right.size() != 0) result.insert(result.end(), right.begin(), right.end()); return result; } };
执行结果:
67 / 67 test cases passed.
|
Status:
Accepted |
Runtime: 36 ms
|
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: vector<int> inorderTraversal(TreeNode *root) { vector<int> result; stack<TreeNode*> TreeStack; if(NULL == root) return result; while(root || !TreeStack.empty()){ while(root){ TreeStack.push(root); root = root->left; } root = TreeStack.top(); result.push_back(root->val); TreeStack.pop(); root = root->right; } } };
执行结果:
67 / 67 test cases passed.
|
Status:
Accepted |
Runtime: 36 ms
|
若您有更好的算法,欢迎提出指正。
原文:http://blog.csdn.net/u011960402/article/details/18957793
内容总结
以上是互联网集市为您收集整理的Binary Tree Inorder Traversal——二叉树的中序遍历全部内容,希望文章能够帮你解决Binary Tree Inorder Traversal——二叉树的中序遍历所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。