Leedcode7-binary-tree-postorder-traversal
生活随笔
收集整理的這篇文章主要介紹了
Leedcode7-binary-tree-postorder-traversal
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<iostream>
#include<vector>
#include<stack>
using namespace std;
// Definition for binary tree 先序遍歷 根左右
struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
#if 0
class Solution { //me ok
public:vector<int> v;vector<int> postorderTraversal(TreeNode *root) {if (root == NULL)return v;if ((*root).left != NULL)postorderTraversal((*root).left);if ((*root).right != NULL)postorderTraversal((*root).right);v.push_back((*root).val);return v;}
};
#endif#if 0
class Solution { //因為這是棧結構,先進后出,所以根左右進,根右左出。
public:vector<int> postorderTraversal(TreeNode *root){vector<int> res;if (!root)return res;stack<TreeNode *> st;st.push(root);while (st.size()){TreeNode *temp = st.top();st.pop();res.push_back(temp->val);if (temp->left)st.push(temp->left);if (temp->right)st.push(temp->right);}reverse(res.begin(), res.end());return res;}
};
#endif#if 1 //非迭代
class Solution {
public:vector<int> v;stack<TreeNode*> s;vector<int> postorderTraversal(TreeNode *root) {if (root == NULL) {return v;}s.push(root);TreeNode *cur = NULL;while (!s.empty()) {cur = s.top();if (cur->left == NULL && cur->right == NULL){s.pop();v.push_back(cur->val);}else {if (cur->right != NULL){s.push(cur->right);cur->right = NULL;}if (cur->left != NULL) {s.push(cur->left);cur->left = NULL;}}}return v;}
};
#endif
總結
以上是生活随笔為你收集整理的Leedcode7-binary-tree-postorder-traversal的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的模型--
- 下一篇: notepad多行编辑_Windows