二叉树的非递归遍历
来源:互联网 发布:windows version 1703 编辑:程序博客网 时间:2024/06/07 09:30
先是中序遍历
/** * 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>v; stack<TreeNode*>s; TreeNode* p = root; while(!s.empty() || p != NULL){ if(p != NULL){ s.push(p); p = p->left; }else { p = s.top(); s.pop(); v.push_back(p->val); p = p->right; } } return v; }};
然后是前序遍历
/** * 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> preorderTraversal(TreeNode *root) { vector<int>v; if(root == NULL) return v; stack<TreeNode*>s; s.push(root); while(!s.empty()){ TreeNode *tmp = s.top(); s.pop(); v.push_back(tmp->val); if(tmp->right) s.push(tmp->right); if(tmp->left) s.push(tmp->left); } return v; }};
后序遍历
/** * 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> postorderTraversal(TreeNode *root) { stack<TreeNode*>s; vector<int>ans; if(root == NULL) return ans; TreeNode *p = root, *q; do{ while(p){ s.push(p); p = p->left; } q = NULL; while(!s.empty()){ p = s.top(); s.pop(); if(p->right == q){ ans.push_back(p->val); q = p; }else { s.push(p); p = p->right; break; } } }while(!s.empty()); return ans; }};
or
vector<int> postorderTraversal(TreeNode *root) { vector<int> v; if (!root) return v; stack<TreeNode *> s; s.push(root); TreeNode *p = NULL; while(!s.empty()) { p = s.top(); s.pop(); v.insert(v.begin(), p->val); if (p->left) s.push(p->left); if (p->right) s.push(p->right); } return v;}
0 0
- 二叉树的递归,非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的遍历--递归+非递归
- 二叉树的递归、非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的先中后序遍历,递归遍历,非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的创建,递归遍历,非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的非递归遍历以及递归遍历
- 二叉树的非递归遍历&递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树的构造,递归遍历,非递归遍历
- 二叉树的遍历(递归+非递归+层次遍历)
- 二叉树的递归遍历与非递归遍历
- 《Fast Traking via Spatio-Temporal Context Learning》要点整理与代码实现之二
- 1、JavaScript中的单引号、双引号的测试
- nyoj 860 又见01背包 【01-背包变形】
- android蓝牙开发---与蓝牙模块进行通信
- Snowflake Snow Snowflakes寻找相似雪花
- 二叉树的非递归遍历
- poj2251--Dungeon Master(搜索练习3-三维bfs)
- 设计模式--观察者模式
- 自定义Access-Control-Allow-Origin策略以解决字体文件跨域权限问题
- 利用aircrack-ng工具获取附近wifi的密码
- MTD设备驱动
- leetcode_Roman to Integer_easy_可以看看方法
- C# winform对话框用法大全
- 1018. 锤子剪刀布