众所周知,树的遍历方式有三种,分别为前序遍历,中序遍历和后序遍历。下面我展开介绍一下。
1.前序遍历:
顺序是:先父节点,再左孩子,最后右孩子。
2.中序遍历:
顺序是:先左孩子,再父节点,最后右孩子。
3.后序遍历:
顺序是:先右孩子,再左孩子,最后父节点。
举个例子:
有一棵树,
用前序遍历的方式就是[1,2,3];中序遍历则是[1,3,2];最后的后序遍历是[3,2,1]。
用一道简单的题目来试试,图是上面的图。
例题:
给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
输入:root = [1,null,2,3]
输出:[1,3,2]
蒟蒻的我用递归做了一下:
/**
* 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> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
inorder(root,res);
return res;
}
private void inorder(TreeNode root, List<Integer> res) {
if (root==null){
return;
}
//中序遍历,左中右
inorder(root.left,res);
res.add(root.val);//添加到数组中
inorder(root.right,res);
}
}
本题是我在力扣是做的,前序遍历和后序遍历其实就是交换最后三行代码的顺序。
希望我的分享对你有用。