网站里宣传视频怎么做,微信号 网站模板,创立制作网站公司,山东省住房和城乡建设部网站递归遍历
递归法讲究的就是一个格式#xff0c;在外边再定义一个用于递归求解的函数reverser#xff0c;参数是递归的二叉树当前根节点和用于保存遍历得到的答案序列的vector容器#xff1b;
函数中的格式就是#xff0c;先写递归终止条件#xff0c;也就是遍历的结点为…递归遍历
递归法讲究的就是一个格式在外边再定义一个用于递归求解的函数reverser参数是递归的二叉树当前根节点和用于保存遍历得到的答案序列的vector容器
函数中的格式就是先写递归终止条件也就是遍历的结点为空时直接return退出这轮遍历再写遍历的操作对于前序遍历就是先保存当前结点的值放入容器中再递归调用reverser函数分别先后遍历左子树和右子树。中序遍历和后序遍历就是调整三个操作的位置即可。
前序遍历
class Solution {
public:void traverser(TreeNode* cur, vectorint vec) {if (cur NULL) return;vec.push_back(cur-val);traverser(cur-left, vec);traverser(cur-right, vec);}vectorint preorderTraversal(TreeNode* root) {vectorint result;traverser(root, result);return result;}
};
中序遍历
class Solution {
public:void reverser(TreeNode* cur, vectorint vec) {if (cur NULL) return;reverser(cur-left, vec);vec.push_back(cur-val);reverser(cur-right, vec);}vectorint inorderTraversal(TreeNode* root) {vectorint result;reverser(root, result);return result;}
};
后序遍历
class Solution {
public:void reverser(TreeNode* cur, vectorint vec) {if (cur NULL) return;reverser(cur-left, vec);reverser(cur-right, vec);vec.push_back(cur-val);}vectorint postorderTraversal(TreeNode* root) {vectorint result;reverser(root, result);return result;}
};
迭代遍历
迭代遍历就是不用递归的遍历是用栈来实现的今天时间不够了只看了一遍随想录理解了一下思想二刷回来补