后序遍历二叉树
来源:互联网 发布:上海汇软科技骗局知乎 编辑:程序博客网 时间:2024/06/05 10:04
递归:
vector<int> postorderTraversal(TreeNode *root) { vector<int> result; if(root==NULL) return result; PostCore(root,result); return result; } void PostCore(TreeNode* root,vector<int>& result){ if(root->left){ PostCore(root->left,result); } if(root->right) PostCore(root->right,result); result.push_back(root->val); }
非递归:
vector<int> postorderTraversal(TreeNode *root) { vector<int> result; if(root==NULL) return result; stack<TreeNode*> trees; trees.push(root); while(!trees.empty()){ TreeNode* pNode=trees.top(); if(pNode->left==NULL&&pNode->right==NULL){ result.push_back(pNode->val); trees.pop(); } if(pNode->right){ trees.push(pNode->right); pNode->right=NULL; } if(pNode->left){ trees.push(pNode->left); pNode->left=NULL; } } return result; }
利用前序遍历:把根-》左-》右 变为 根-》右-》左 再把 结果 reverse
利用 栈
vector<int> postorderTraversal(TreeNode *root) { vector<int> result; if(root==NULL) return result; stack<TreeNode*> trees; trees.push(root); while(!trees.empty()){ TreeNode* pNode=trees.top(); trees.pop(); result.push_back(pNode->val); if(pNode->left) trees.push(pNode->left); if(pNode->right) trees.push(pNode->right); } reverse(result.begin(),result.end()); return result; }
阅读全文
0 0
- 二叉树 - 后序遍历
- 后序遍历二叉树
- 后序遍历二叉树
- 后序遍历二叉树非递归
- 非递归后序遍历二叉树
- 非递归后序遍历二叉树
- 非递归后序遍历二叉树
- 二叉树非递归后序遍历
- 数据结构练习题---后序遍历二叉树
- 二叉树非递归后序遍历
- 二叉树的后序遍历
- 二叉树非递归后序遍历
- 二叉搜索树的后序遍历
- 二叉搜索树的后序遍历
- 二叉树的后序遍历
- 二叉搜索树的后序遍历
- 二叉树的后序遍历算法
- 题目:二叉树的后序遍历
- nyist-ACM17新生国庆集训Round#1题解
- fedora卸载软件
- BZOJ4386: [POI2015]Wycieczki
- 第二课、C简介
- Elasticsearch
- 后序遍历二叉树
- jQuery DOM操作筛选
- shell 问题两则
- Sudoku Solver
- 欢迎使用CSDN-markdown编辑器
- 关系数据库
- POJ 3304 Segments
- leetcode 315. Count of Smaller Numbers After Self 这个AC的做法实在是难以想到
- 构建ubuntu根文件系统