二叉树的遍历方法(递归,迭代)
二叉树的遍历
-
先序遍历
遍历顺序:根节点 ->左子树 -> 右子树
先序遍历的结果:124536
-
中序遍历
遍历顺序:左子树 -> 根节点 -> 右子树
中序遍历结果:425163 -
后序遍历
遍历顺序:左子树 -> 右子树 -> 根节点
后序遍历结果:452631 -
层序遍历
遍历顺序:从上至下,从左至右层序遍历结果:123456
递归实现
- 树节点使用leetcode提供标准
Definition for a binary tree node.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x; }
}
- 先序遍历
public List<Integer> preorderTraversal(TreeNode root){
List<Integer> list = new ArrayList<>();
preorder(root, list);
return list;
}
private void preorder(TreeNode node, List<Integer> list){
if(node == null) return;
list.add(node.val);
preorder(node.left);
preorder(node.right);
}
- 中序遍历
public List<Integer> inorderTraversal(TreeNode root){
List<Integer> list = new ArrayList<>