递归法:注意vec地址传递
迭代法:先将根节点入栈,在栈不为空时进行迭代:处理栈顶值存入结果数组,若该节点有右节点则存入栈,若有左节点则存入栈,依次循环。
递归法:注意vec地址传递
迭代法:与前序遍历类似,讲左右节点处理顺序颠倒,最后翻转结果数组
递归法:注意vec地址传递
迭代法:先将根节点存为cur节点,当cur节点不为空或stack不为空时执行迭代:
若cur节点不为空,将cur存入栈且一直向左遍历;当cur节点为空时,cur遍历至栈中的top节点,并取出存入结果数组,cur遍历至右节点,依次循环。
拓展:统一迭代法
思路:每次循环取栈顶值作为note。当note不为空时,先将所有元素倒序存入栈(例如:前序遍历按“右左中”顺序存入栈),并在存入中后存入NULL作为标记;当note为空时,先pop NULL,note取为栈顶元素,存入结果数组。
注意:循环开始前要先将root存入栈,倒序存入note前要先弹出root
前序遍历:中左右-右左中
后序遍历:左右中-中右左
中序遍历:左中右-右中左