二叉树的遍历

二叉树的遍历

每次需要用的时候,都要回过头去找,还不如就在这里记一下

这篇文章写的很不错 标记一下https://www.cnblogs.com/bigsai/p/11393609.html

先序遍历

先序遍历主要遵从 根 -> 左 -> 右 的方式进行遍历

class Solution {
    List<Integer> list = new ArrayList();
    public List<Integer> invertTree(TreeNode root) {
        if(root!=null){          
            list.add(root.val);
            invertTree(root.left);
            invertTree(root.right);
            return list;
        }else{
            return list;
        }
    }
}

中序遍历

中序遍历主要遵从 左 -> 根 -> 右 的方式进行遍历

class Solution {
    List<Integer> list = new ArrayList();
    public List<Integer> invertTree(TreeNode root) {
        if(root!=null){          
            invertTree(root.left);
            list.add(root.val);
            invertTree(root.right);
            return list;
        }else{
            return list;
        }
    }
}

后序遍历

后序遍历主要遵从 左 -> 右 -> 根 的方式进行遍历

class Solution {
    List<Integer> list = new ArrayList();
    public List<Integer> postorderTraversal(TreeNode root) {
        if(root!=null){
            postorderTraversal(root.left);
            postorderTraversal(root.right);
            list.add(root.val);
            return list;
        }else{
            return list;
        }
    }
}

层次遍历

就是一层一层的遍历,需要用到队列进行辅助

public void cengxu(node t) {//层序遍历
	Queue<node> q1 = new ArrayDeque<node>();
	if (t == null)
		return;
	if (t != null) {
		q1.add(t);
	}
	while (!q1.isEmpty()) {
		node t1 = q1.poll();
		if (t1.left != null)
			q1.add(t1.left);
		if (t1.right != null)
			q1.add(t1.right);
		System.out.print(t1.value + " ");
	}
	System.out.println();
}
posted @ 2020-07-11 10:36  非吾愆期  阅读(112)  评论(0)    收藏  举报