二叉树的遍历有三种,前序遍历,中序遍历,后续遍历
前序遍历:根节点 ——> 左节点 ——> 右节点
中序遍历:左节点 ——> 根节点 ——> 右节点
后序遍历:左节点 ——> 右节点 ——> 根节点
下面是手绘图示意遍历的过程:
前序遍历:根节点 ——> 左节点 ——> 右节点
中序遍历:左节点 ——> 根节点 ——> 右节点
后序遍历:左节点 ——> 右节点 ——> 根节点
递归实现树的遍历
递归和树的遍历是紧密联系的,不懂递归的同学可以看代码配合着手绘图就简单易懂了
前序遍历:根节点 ——> 左节点 ——> 右节点
中序遍历:左节点 ——> 根节点 ——> 右节点
后序遍历:左节点 ——> 右节点 ——> 根节点
二叉树
最后讲一下时间复杂度和空间复杂度
时间复杂度是O(n) 因为他要遍历完所有元素,所以表中如果有n个元素,就需要遍历n次
空间复杂度:平均是O(d),因为递归需要用到方法栈,所以最大栈数和递归树的最大深度一样
但是如果递归树只有左子树或者只有右子树,它就退化成了链表,所以最坏的情况是O(n)
Reference:代码来自Algoexpert,以学习作为主要目的来分享的。