![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程题之二叉树类
qq_33436509
这个作者很懒,什么都没留下…
展开
-
二叉树遍历
typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild; //左右孩子}BiTNode,*BiTree;1,前序遍历创建二叉树void CreateBiTree(BiTNode **root) //二级指针作为函数参数{ char ch; //要插入的数据 ...原创 2018-08-03 23:31:01 · 141 阅读 · 0 评论 -
求二叉树的镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像。思路:从根节点开始,交换左右节点,然后前序遍历。class Solution {public: void Mirror(TreeNode *pRoot) { if(pRoot==NULL) return ; if(pRoot->left==NULL&&am...原创 2018-08-30 13:22:27 · 106 阅读 · 0 评论 -
从上往下打印出二叉树的每个节点,同层节点从左至右打印
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印思路:借助一个队列,先把根节点入队,每打印一个节点的值时,也就是打印队列头的节点时,都会把它的的左右孩子入队,并且把该节点出队。直到队列为空。class Solution {public: vector<int> PrintFromTopToBottom(TreeNode* root) { ...原创 2018-08-30 13:32:12 · 801 阅读 · 0 评论 -
求二叉树深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:从根节点开始,如果左子树的深度大于右子树的深度,整个深度就是左子树深度加1,相反就是右子树的深度加1class Solution {public: int TreeDepth(TreeNode* pRoot) { if(p...原创 2018-08-30 14:11:18 · 1608 阅读 · 0 评论 -
输入一棵二叉树,判断该二叉树是否是平衡二叉树
题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树思路:平衡二叉树:某节点的左右子树深度差绝对值不超过1,可以先求左右子树的深度,判断这个节点是不是平衡的。class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot==NULL) return...原创 2018-08-30 15:07:31 · 2000 阅读 · 0 评论 -
请实现一个函数,用来判断一颗二叉树是不是对称的
题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:前序遍历和对称前序遍历(先遍历根节点 然后遍历右子树,然后左子树),而且需要考虑null节点。class Solution {public: bool isSymmetrical(TreeNode* pRoot) { return...原创 2018-08-30 15:13:18 · 389 阅读 · 0 评论