目录
1.知识点介绍;
2.解题思路;
3.代码编写;
1.知识点介绍:
前序遍历:先访问根结点;再访问左结点;最后访问右结点;
中序遍历:先访问左结点;再访问根结点;最后访问右结点;
后续遍历:先访问左结点;再访问右结点;最后访问根结点;
2.解题思路:
(1) 前序遍历:[1,2,3]
(2)中序遍历:[1,3,2]
(3) 后续遍历:[3,2,1]
(1) 定义一个res返回数组vector<int>; 判空操作;
定义node结点先指向root;利用栈stack进行存放数据;
若node结点不是空且stack的数据还没出完;那么就将该节点的值给到数组res和stack中;
然后再到左边去看是否要入栈,出数据;不用的话就将stack的顶部元素记录并且出掉;
再将node到右边看看。这就完成对根左右的数据处理。
(2)和前序遍历大体差不多;但是要先找到最左结点。所以就要要找到左节点;并且入栈;
再出栈顶部元素;再到右子树看看。
(3)找到左结点并且入栈,然后出栈,如果右节点元素为空或者为prev,就进入res;prev标记为root;再将root置空;若不是就再入栈,到右子树看看。
3.代码编写;
前序遍历:
中序遍历:
后序遍历: