博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 144. Binary Tree Preorder Traversal
阅读量:5324 次
发布时间:2019-06-14

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

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 vector
preorderTraversal(TreeNode *root) 2 { 3 vector
vtree; 4 preorder(vtree, root); 5 return vtree; 6 } 7 8 void preorder(vector
&vtree, TreeNode *root) 9 {10 if (root == NULL)11 return;12 vtree.push_back(root->val);13 preorder(vtree, root->left);14 preorder(vtree, root->right);15 }

对于非递归方式,需要借助堆栈来临时存储tree node

1) if current node P is not empty, visit it and put P->right in stack, then P = P->left

2) else, get the top node in stack

1 vector
preorderTraversal(TreeNode *root) 2 { 3 vector
vtree; 4 stack
stree; 5 TreeNode *visit = root; 6 7 while (!stree.empty() || (visit != NULL)) 8 { 9 if (visit != NULL) 10 { 11 vtree.push_back(visit->val); // if visit is not empty, visit it12 if (visit->right != NULL) // if visit->right exit, push it in stack13 stree.push(visit->right);14 visit = visit->left;15 }16 else // visit is null17 {18 visit = stree.top();19 stree.pop();20 }21 }22 23 return vtree;24 }

 

转载于:https://www.cnblogs.com/ym65536/p/4231519.html

你可能感兴趣的文章
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
启动redis一闪就关
查看>>
Maven之setting.xml配置文件详解
查看>>
ASP.NET 4.5 Web Forms and Visual Studio vs2013年入门1
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>