7力扣题做题笔记及复盘--二叉树的递归遍历(递归、二叉树)
144. 二叉树的前序遍历 - 力扣(LeetCode)
94. 二叉树的中序遍历 - 力扣(LeetCode)
145. 二叉树的后序遍历 - 力扣(LeetCode)
二叉树的遍历:
前序:中左右;
中序:左中右;
后序:左右中;
思路
采用递归的方法,
代码
前序遍历:
/** * 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> list = new ArrayList<>(); preorder(root,list); return list; } public void preorder(TreeNode node,List<Integer> list){ if (node == null) { return; } list.add(node.val); if(node.left !=null){ preorder(node.left,list); } if(node.right !=null){ preorder(node.right,list); } } }
后序遍历:
class Solution { public List<Integer> postorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); postOrder(root,list); return list; } public void postOrder(TreeNode node,List<Integer> list){ if(node == null){ return; } if(node.left !=null){ postOrder(node.left,list); } if(node.right !=null){ postOrder(node.right,list); } list.add(node.val); } }