博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前中后序遍历二叉树的非递归实现
阅读量:4072 次
发布时间:2019-05-25

本文共 1732 字,大约阅读时间需要 5 分钟。

struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :    val(x), left(NULL), right(NULL) {    }};class TreeToSequence {    vector
preOrder(TreeNode * root){ vector
ans; stack
s; TreeNode * cur = root; if(cur) s.push(cur); while (!s.empty()) { cur = s.top(); s.pop(); ans.push_back(cur->val); if(cur->right) s.push(cur->right); if(cur->left) s.push(cur->left); } return ans; } vector
Inorder(TreeNode * root){ TreeNode * cur = root; vector
ans; stack
s; if(cur){ s.push(cur); cur = cur->left; } while (!s.empty()||cur) { if(cur){ s.push(cur); cur = cur->left; } else { TreeNode * node = s.top(); s.pop(); ans.push_back(node->val); cur = node ->right; } } return ans; } vector
postOrder(TreeNode *root){//可以用一个辅助栈实现,但是稍微复杂 这里未写出 stack
inputStack,outputStack; vector
ans; TreeNode * cur = root; if(cur) inputStack.push(cur); while (!inputStack.empty()) { cur = inputStack.top(); inputStack.pop(); outputStack.push(cur); if(cur->left) inputStack.push(cur->left); if(cur->right) inputStack.push(cur->right); } while (!outputStack.empty()) { cur = outputStack.top(); outputStack.pop(); ans.push_back(cur->val); } return ans; }public: vector
> convert(TreeNode* root) { vector
> ans; ans.push_back(preOrder(root)); ans.push_back(Inorder(root)); ans.push_back(postOrder(root)); return ans; }};

转载地址:http://wehji.baihongyu.com/

你可能感兴趣的文章
network manager
查看>>
OS + Linux Disk disk lvm / disk partition / disk mount / disk io
查看>>
RedHat + OS CPU、MEM、DISK
查看>>
net TCP/IP / TIME_WAIT / tcpip / iperf / cain
查看>>
webServer kzserver/1.0.0
查看>>
hd printer lexmark / dazifuyin / dayin / fuyin
查看>>
OS + Unix IBM Aix basic / topas / nmon / filemon / vmstat / iostat / sysstat/sar
查看>>
my ReadMap subway / metro / map / ditie / gaotie / traffic / jiaotong
查看>>
OS + Linux DNS Server Bind
查看>>
linux内核模块中 软中断的 例子
查看>>
grails中主键的uuid生成方式
查看>>
grails下acegi的访问规则的配置
查看>>
纯c封装的一个队列
查看>>
linux中时间精度的获取问题
查看>>
cancel_rearming_delayed_workqueue 函数使用的一个小备注
查看>>
使用LOGFONT修改windows sdk下字体为系统字体
查看>>
wind32 sdk下修改控件的字体
查看>>
c列举文件目录
查看>>
解决MFC下线程创建的一个编译错误
查看>>
在HW这四个月
查看>>