Java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
import java.util.ArrayList;
import java.util.List;
/**
* <a href="https://leetcode.cn/problems/binary-tree-postorder-traversal/">Binary Tree Postorder Traversal</a>
* 栈;树;深度优先搜索;二叉树
*/
class Solution {
public void dfs(List<Integer> list, TreeNode root) {
if (root != null) {
dfs(list, root.left);
dfs(list, root.right);
list.add(root.val);
}
}
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
dfs(list, root);
return list;
}
}
C++
#ifndef LEETCODE_SOLUTIONS_TREENODE_H
#define LEETCODE_SOLUTIONS_TREENODE_H
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
#endif //LEETCODE_SOLUTIONS_TREENODE_H
#include <iostream>
#include "TreeNode.h"
using namespace std;
class Solution {
public:
void DFS(TreeNode *u, vector<int> &res) {
if (u) {
DFS(u->left, res);
DFS(u->right, res);
res.push_back(u->val);
}
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int> res;
DFS(root, res);
return res;
}
};