Binary Tree Inorder Traversal
来源:互联网 发布:旅行者1号 知乎 编辑:程序博客网 时间:2024/05/17 05:18
Description:
Given a binary tree, return the inorder traversal of its nodes’ values.
For example: Given binary tree {1,#,2,3},
return [1,3,2].
Note: Recursive solution is trivial, could you do it iteratively?
分析
使用栈
代码:
#include <iostream>#include <stack>#include <vector>#define Elementype charusing namespace std;typedef struct TreeNode //树结点{ Elementype val; TreeNode *left; TreeNode *right; TreeNode(Elementype x) : val(x), left(nullptr), right(nullptr) {}} *Tree;int index = 0; //全局索引变量//使用先序遍历创建创建二叉树//左子树或右子树不存在用"#"表示void MakeBinaryTree(Tree &T, Elementype value[]){ Elementype c = value[index++]; if (c == '#') T = nullptr; else { T = new TreeNode(c); MakeBinaryTree(T->left, value); MakeBinaryTree(T->right, value); }}//非递归先序遍历//使用栈,每访问一个结点,直到其左右结点都访问完之后才出栈vector<Elementype> BinaryTreeinorderTraversal(Tree root){ vector<Elementype> result; stack<Tree> sk; Tree p = root; while (!sk.empty() || p != nullptr) { if (p != nullptr) { sk.push(p); p = p->left; } else { p = sk.top(); sk.pop(); result.push_back(p->val); p = p->right; } } return result;}int main(){ Tree T = nullptr; Elementype data[7] = {'1','#','2','3','#','#','#'}; //注意,每个结点都要有值 vector<Elementype> result; MakeBinaryTree(T, data); result = BinaryTreeinorderTraversal(T); for (auto &s : result) cout << s << " "; cout << endl; system("pause"); return 0;}
测试:
0 0
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- swig(Lua)对STL/C++ library的支持
- POJ:1328 特别注意flag的使用地点
- 用alibba的jar包返回json格式化
- runTime运用的场景
- 高通平台android 环境配置编译及开发经验总结
- Binary Tree Inorder Traversal
- 异常处理--error
- css中新增加的伪类选择器
- JS打开新窗口的2种方式
- 5-36 求n以内最大的k个素数以及它们的和 (20分)
- Java 四种内部类
- C#控制台 输出hello world之 用类的实例构造函数输出
- 学习UPnP
- 华为2017上合地区码上来试试模拟试题