144. 二叉树的前序遍历
Posted swetchine
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了144. 二叉树的前序遍历相关的知识,希望对你有一定的参考价值。
给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
solution1:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) 8 * ; 9 */ 10 class Solution 11 public: 12 vector<int> preorderTraversal(TreeNode* root) 13 vector<int>vec; 14 preorderTraversal(root,vec); 15 return vec; 16 17 void preorderTraversal(TreeNode* root,vector<int>&vec) 18 19 if(root!=nullptr) 20 21 vec.push_back(root->val); 22 preorderTraversal(root->left,vec); 23 preorderTraversal(root->right,vec); 24 25 26 ;
solution2:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) 8 * ; 9 */ 10 class Solution 11 public: 12 vector<int> preorderTraversal(TreeNode* root) 13 vector<int>vec; 14 TreeNode* p = root; 15 stack<TreeNode*>st; 16 while(p!=nullptr || !st.empty()) 17 18 while(p!=nullptr) 19 20 st.push(p); 21 vec.push_back(p->val); 22 p=p->left; 23 24 if(!st.empty()) 25 26 p = st.top(); 27 st.pop(); 28 p = p->right; 29 30 31 return vec; 32 33 ;
思路:前序遍历一颗二叉树,即根→左→右,那么很明显会沿着根顺着左孩子而下,直到到达最底层的左孩子,那么接下来需要访问该节点的右孩子。
以上是关于144. 二叉树的前序遍历的主要内容,如果未能解决你的问题,请参考以下文章