博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++版 - LeetCode 144. Binary Tree Preorder Traversal (二叉树先根序遍历,非递归)
阅读量:7069 次
发布时间:2019-06-28

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

144. Binary Tree Preorder Traversal

 

提交网址: 

Total Accepted: 118355 Total Submissions: 297596 Difficulty: Medium

Given a binary tree, return the preorder traversal of its nodes' values.

For example:

Given binary tree {1,#,2,3},

1    \     2    /   3

return [1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?

分析:

借助栈实现非递归先序遍历算法的方法如下:
1)将二叉树的根结点作为当前结点。

2)若当前结点非空,则先访问该结点,并将该结点进栈,再将其左孩子结点作为当前结点,重复步骤2),直到当前结点为NULL为止。
3)若栈非空,则栈顶结点出栈,并将当前结点的右孩子结点作为当前结点。
4)重复步骤2)、3),直到栈为空且当前结点为NULL为止。

AC代码:

#include
#include
#include
using namespace std;struct TreeNode{ int val; TreeNode *left, *right; TreeNode(int x): val(x), left(NULL), right(NULL) {} };class Solution{public: vector
preorderTraversal(TreeNode *root) { vector
res; TreeNode *p; stack
s; p=root; while(!s.empty() || p!=NULL) { if(p!=NULL) { res.push_back(p->val); s.push(p); p=p->left; } if(p==NULL) { p=s.top(); s.pop(); p=p->right; } } return res; } };// 以下为测试部分/*int main(){ Solution sol; vector
res; TreeNode *root = new TreeNode(1); root->right = new TreeNode(2); root->right->left = new TreeNode(3); res=sol.preorderTraversal(root); for(int i:res) cout<
<<" "; // 此处为vector遍历的方法,C++11标准支持 return 0;}*/

转载于:https://www.cnblogs.com/enjoy233/p/10408845.html

你可能感兴趣的文章
ES 處於“initializing”狀態,此時主節點正在嘗試將分片分配到集群中的數據節點。 如果您看到分片仍處於初始化或未分配狀態太長時間,則可能是您的集群不穩定的警告信號。...
查看>>
切换RequiredFieldValidator和RegularExpressionValidator提示信息的控件
查看>>
基于类的封装[基础]
查看>>
android studio插件提升工作效率
查看>>
What is VMR(Video Mixing Render)-From MSDN
查看>>
Linux下安装nmap扫描工具
查看>>
git 创建branch分支【转】
查看>>
北京某公司.NET面试题
查看>>
解决异常“SqlParameterCollection 只接受非空的 SqlParameter 类型对象。”
查看>>
PostgreSQL通过mysql_fdw访问MySQL数据库
查看>>
REST风格的原则
查看>>
Struts分页的一个实现
查看>>
[LintCode] Nuts & Bolts Problem 螺栓螺母问题
查看>>
53.2. group_concat() 列传行
查看>>
I.MX6 SHT20 Linux 驱动移植
查看>>
7.4. String
查看>>
使用PHP配置文件
查看>>
【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
查看>>
开发网站合集
查看>>
fastcgi配置
查看>>