LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)
Posted shixinzei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3]
1
\\
2
/
3
输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
/** * Definition for a binary tree node. * struct TreeNode * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) * ; */ class Solution public: vector<int> postorderTraversal(TreeNode* root) vector<int> result; if(root==nullptr) return result; stack<TreeNode*> s; TreeNode *p=root,*r=nullptr; while(p||!s.empty()) if(p) s.push(p); p=p->left; else p=s.top(); if(p->right&&p->right!=r) p=p->right; else s.pop(); result.push_back(p->val); r=p; p=nullptr; // if(p->right==nullptr||p->right==r) // s.pop(); // result.push_back(p->val); // r=p; // p=nullptr; // else // p=p->right; // return result; ;
以上是关于LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)