前序中序遍历
秦枫-_-
慵懒的程序猿
展开
-
C++二叉搜索树的最小节点距离(中序遍历)
如图 找出二叉搜索树的节点最小差值,二叉搜索树是排序树,所以最小差值必然在根节点和对应的子节点之间,所以简单的中序遍历即可 双指针法: class Solution { private: int mindiff=INT_MAX; int pre=-1,cur=-1; public: int minDiffInBST(TreeNode* root) { if(!root) return 0; minDiffInBST(root->left); pre.原创 2021-04-13 13:09:07 · 130 阅读 · 1 评论 -
C++二叉树的镜像--两种方法(自上而下和自下而上实现)(附全部实现实现代码)
首先构造结构体: struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x):val(x), left(NULL), right(NULL) {}; }; 自下而上实现方式:就是先依次遍历右节点再遍历左节点两者交换然后返回根节点,也就是逆后序遍历(后序遍历也可以实现在这里就不多写了) class Solution { private: vector<vector<.原创 2021-03-27 20:27:10 · 436 阅读 · 1 评论 -
C++验证二叉树的前序或中序序列化
任意给出一个序列,判断他属不属于二叉树的前序序列,或者还是中序序列,文章采用的是非重构树的方法。 如图:遇到空节点用#表示 实现思路:根据前序遍历的定义:先访问当前节点,再依次访问其左右子树,化成序列为:"9,3,4,#,#,1,#,#,2,#,6,#,#" 中序遍历:先访问根节点的左子树,再访问当前根节点,最后访问根节点的右子树。化成序列为:“#,4,#,3,#,1,#,9,#,2,#,6,#” 那么从定义入手,判断q前序序列,先访问自身,那么首个字符一定是根节点,我们把空节点‘’#’也当成一个没有子节原创 2021-03-13 00:10:51 · 180 阅读 · 1 评论