09 2020 档案

摘要:题目: 给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。 分析:中序遍历后进行建树 方法一:递归中序遍历结果存到向量中,再根据向量中的值进行建树 void inorder(TreeNode* root,vector<int> &v 阅读全文
posted @ 2020-09-08 20:01 Hello-Vivi 阅读(195) 评论(0) 推荐(0)
摘要:方法:用递归函数求出每个子树的高度,再判断|高度差|>1时不是平衡二叉树 bool isBalanced(TreeNode* root) { if(root==NULL) return true;//空树是平衡二叉树 //前序遍历式的递归 int left=height(root->left); i 阅读全文
posted @ 2020-09-05 21:29 Hello-Vivi 阅读(174) 评论(0) 推荐(0)
摘要:方法一:判断中序遍历数列是否递增(非递归) bool isValidBST(TreeNode* root) { stack <TreeNode*>s; TreeNode* p=root; if(root==NULL) return true; long long temp=(long long)IN 阅读全文
posted @ 2020-09-05 21:16 Hello-Vivi 阅读(459) 评论(0) 推荐(0)
摘要:力扣这两算法的方法差不对,一并整理。 (一)判断B是否是A的子树 recur(A, B) 函数: 终止条件:当节点 BB 为空:说明树 BB 已匹配完成,因此返回 true;当节点 AA 为空:说明已经越过树 AA 叶子节点,即匹配失败,返回 false;当节点 AA 和 BB 的值不同,返回 fa 阅读全文
posted @ 2020-09-02 20:22 Hello-Vivi 阅读(314) 评论(0) 推荐(0)