Leetcode 二叉树的前中后序遍历

62 阅读1分钟

二叉树的前序遍历

使用递归的方式

/**

* Definition for a binary tree node.

* 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;

* }

* }

*/

class Solution {

public List<Integer> preorderTraversal(TreeNode root) {

List<Integer> res = new ArrayList<Integer>();

preorder(root,res);

return res;

\


}

public void preorder(TreeNode root, List<Integer> res){

if(root==null)return;

res.add(root.val);

preorder(root.left,res);

preorder(root.right,res);

}

}

中序

class Solution {

public List<Integer> inorderTraversal(TreeNode root) {

List<Integer> res = new ArrayList<Integer>();

inorder(root,res);

return res;

}

public void inorder(TreeNode root,List<Integer> res){

if(root==null)return ;

inorder(root.left,res);

res.add(root.val);

inorder(root.right,res);

}

}

后序

class Solution {

public List<Integer> postorderTraversal(TreeNode root) {

List<Integer> res = new ArrayList<Integer>();

postorder(root,res);

return res;

}

public void postorder(TreeNode root,List<Integer> res){

if(root==null)return ;

postorder(root.left,res);

postorder(root.right,res);

res.add(root.val);

}

}