leetcode144. 二叉树的前序遍历(递归+迭代)
生活随笔
收集整理的這篇文章主要介紹了
leetcode144. 二叉树的前序遍历(递归+迭代)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:題目
二:上碼
1:遞歸
class Solution { public:void preorder(TreeNode* root,vector<int>&v ) {if(root == NULL) return;v.push_back(root->val);preorder(root->left,v);preorder(root->right,v);}vector<int> preorderTraversal(TreeNode* root) {vector<int> ans;preorder(root,ans);return ans;} };2:迭代遍歷
class Solution { public:vector<int> preorderTraversal(TreeNode* root) {/**思路:1.迭代遍歷2.這里我們用到了棧,其實遞歸遍歷中的遞歸本質就是棧(操作系統層面上的),我們在遞歸的時候當遇到遞歸終止條件的時候,是一層一層往回返,那這的話,就是棧的先進后出特性.3.迭代遍歷,中我們先將根節點入隊,然后將其出隊將其出隊的結點的右節點先入隊,然后再將左節點入隊,(這是為了保證出隊的時候我們的順序是先序的順序 中左右)**/vector<int> ans;stack<TreeNode*>st;if(root != NULL)st.push(root);while(!st.empty()) {TreeNode* value = st.top();ans.push_back(value->val);st.pop();if(value->right) st.push(value->right);if(value->left) st.push(value->left);}return ans;} };
如有疑問請留言!!! 一個人可以走的很快 團結協作才能走的更遠!!!!!!!!
總結
以上是生活随笔為你收集整理的leetcode144. 二叉树的前序遍历(递归+迭代)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode347. 前 K 个高频
- 下一篇: leetcode94. 二叉树的中序遍历