二叉树
ChasingTheFreeWind
这个作者很懒,什么都没留下…
展开
-
二叉树的最近公共祖先(未完待续)
问题1.二叉搜索树的最近公共祖先剑指 Offer 68 - I. 二叉搜索树的最近公共祖先思路求二叉搜索树中的两个节点p,q的最近公共祖先的思路比较简单:①如果遍历到的节点node的值在p节点的值和q节点的值之间,则说明p,q分别在node的左右子树之中,则node就是p和q的最近公共祖先。②如果node的值大于p和q的值,则p和q应该都在node的左子树中,即此时递归查找node的左子树。③如果node的值小于p和q的值,则p和q应该都在node的右子树中,则此时递归查找node的右子树。原创 2020-10-04 21:11:33 · 80 阅读 · 0 评论 -
二叉树遍历栈实现
中序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int> inorderT原创 2020-07-18 00:26:25 · 147 阅读 · 0 评论 -
PAT1004 Counting Leaves (30分)
思路应该是个很简单的题给一棵树,让输出每层叶子节点的个数。用一个结构体Node存储节点的children,然后从根节点开始遍历,遇到叶子节点,该层叶子节点数+1代码#include <iostream>#include <cstdio>#include <cstring>#include <string>using namespace std;#define MAX 110struct Node{ int num; .原创 2020-06-08 09:33:40 · 153 阅读 · 0 评论 -
PAT 1138 Postorder Traversal (25分)
题意已知前序中序求后序第一个数字代码#include <iostream>#include <cstdio>#include <algorithm>#define MAX 50010using namespace std;int pre[MAX];int in[MAX];int ans=-1;int N;void getPost(int pL,int pR,int iL,int iR){ if(ans>0) ret.原创 2020-05-13 11:55:54 · 136 阅读 · 0 评论 -
PAT 1135 Is It A Red-Black Tree (30 分)
题目链接绝对的菜鸡了,看到二叉树只会先递归重建。。。搞了半天过一个样例,15分。哭了。只好去看看柳神的题解学习了学习了。代码#include <iostream>#include <vector>#include <cstdio>#include <cmath>using namespace std;int K;struct Node{ int val; Node* lc,*rc;};Node* build(Node原创 2020-05-09 20:44:42 · 809 阅读 · 0 评论 -
leetcode每日一题 572.另一个树的子树
思路递归的方法。如果节点相等则判断子树是否相等,如果相等则返回true,反之返回false。如果节点不等,则查找其左子树和右子树,直到找到相等的节点。代码class Solution {public: bool isSame(TreeNode* s, TreeNode* t) { return (s==t)||((s!=NULL&&t!=...原创 2020-05-07 10:35:35 · 191 阅读 · 0 评论 -
PAT 1130 Infix Expression (二叉树的中序遍历)
题目链接思路这题还挺有意思的。题目也很清晰,就是个二叉树的中序遍历。然后需要主要括号的输出,遇到根节点和叶子节点不输出括号。代码#include <iostream>#include <cstdio>#include <string>using namespace std;int N;struct Node{ string val;...原创 2020-05-07 09:59:51 · 209 阅读 · 0 评论 -
PAT 1119 Pre- and Post-order Traversals (30分)
已知前序后序求中序#include <iostream>#include <cstring>#include <cstdio>#define MAXusing namespace std;int N;int pre[35];int post[35];int in[35];int k=0;bool flag = true;void In...原创 2020-05-03 21:51:53 · 141 阅读 · 0 评论 -
PAT 1151 LCA in a Binary Tree (30分) (两种解法)
PAT 1151 LCA in a Binary Tree (30分) (两种解法)题目链接分析这个和PAT 1143是类似的题目,区别就是PAT 1143是二叉搜索树,而这一题就是个普通的二叉树。第一种解法必然是无脑的重建树,然后找U和V的祖先。解法1#include <iostream>#include <cstring>#include <cst...原创 2020-03-20 17:05:24 · 189 阅读 · 0 评论 -
PAT 1143 Lowest Common Ancestor (30分)(两种解法)
PAT 1143. Lowest Common Ancestor (30分)题目链接分析给一个二叉搜索树的前序遍历数组,让求最近公共祖先。首先最容易想到的办法就是:重建树,然后找U和V的祖先,分别得到U和V的祖先数组。同时从后到前遍历U和V的祖先数组,设为ancU, ancV,最后一个满足ancU==ancV的就是U和V的最近公共祖先。解法1#include <iostream&...原创 2020-03-20 16:46:15 · 164 阅读 · 0 评论 -
关于二叉树的题目总结(PAT)
PAT比较喜欢考察二叉树,二叉树的题目解答一般不长,但是需要对二叉树的遍历、性质比较熟悉才能快速获得思路,完成解答。现在整理一些题目以供巩固和以后复习。PAT 1043 Is it a Binary Search Tree(25分)PAT1043题目描述就不贴了。解法1解法一是比较容易想到的方法,但是调通却花了我很长时间。原因无他,就是太菜。思路:二叉搜索树一个重要性质:中序遍历就是...原创 2020-03-04 19:32:28 · 422 阅读 · 1 评论 -
PTA L2-006 树的遍历
原题链接#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;algorithm&gt;#include &lt;vector&gt;#include &lt;queue&gt;using namespace std;int N;int post[32原创 2019-01-02 15:42:11 · 425 阅读 · 0 评论