当前位置: 首页 > news >正文

营销型网站建设 案例百度招商客服电话

营销型网站建设 案例,百度招商客服电话,网站收录怎么做,pc端手机网站 viewport 自适应目录 二叉树OJ(leetcode)训练习题:: 1.单值二叉树 2.检查两棵树是否相同 3.二叉树的前序遍历 4.另一棵树的子树 5.二叉树的构建及遍历 6.二叉树的销毁 7.判断二叉树是否是完全二叉树 二叉树OJ(leetcode)训练习题:: 1.单值二叉…

目录

二叉树OJ(leetcode)训练习题::

                                     1.单值二叉树

                                     2.检查两棵树是否相同 

                                     3.二叉树的前序遍历

                                     4.另一棵树的子树

                                     5.二叉树的构建及遍历

                                     6.二叉树的销毁

                                     7.判断二叉树是否是完全二叉树 

                   


二叉树OJ(leetcode)训练习题::

1.单值二叉树

//单值二叉树
//思路:相等的传递性
struct TreeNode
{int val;struct TreeNode* left;struct TreeNode* right;
};
bool isUnivalTree(struct TreeNode* root)
{if (root == NULL)return true;if (root->left && root->val != root->left->val)return false;if (root->right && root->val != root->right->val)return false;//走到此位置说明当前的父亲和孩子是相等的return isUnivalTree(root->left) && isUnivalTree(root->right);
}

2.检查两棵树是否相同 

//相同的树
//思路:根比较 子树比较 
struct TreeNode
{int val;struct TreeNode* left;struct TreeNode* right;
};
bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{if (p == NULL && q == NULL)return true;//其中一个为空 另一个不为空if (p == NULL || q == NULL)return false;//都不为空if (p->val != q->val)return false;//走到此位置说明p,q均不为空,且根的值是相等的return isSameTree(p->left, q->right) && isSameTree(p->right, q->right);
}

3.二叉树的前序遍历

//二叉树的前序遍历
//要求:既要返回数组的首地址 又要返回数组的长度
struct TreeNode
{int val;struct TreeNode* left;struct TreeNode* right;
};
int TreeSize(struct TreeNode* root)
{if (root == NULL)return 0;return TreeSize(root->left) + TreeSize(root->right) + 1;
}
void preorder(struct TreeNode* root, int* a, int* pi)
{if (root == NULL)return;a[*pi] = root->val;(*pi)++;preorder(root->left, a, pi);preorder(root->right, a, pi);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{int n = TreeSize(root);int* a = (int*)malloc(sizeof(int) * n);int i = 0;preorder(root, a, &i);*returnSize = n;return a;
}

4.另一棵树的子树 

//另一棵树的子树
//思路:原树中的每棵子树都和subRoot树比较+相同的树代码
struct TreeNode
{int val;struct TreeNode* left;struct TreeNode* right;
};
bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{if (p == NULL && q == NULL)return true;//其中一个为空 另一个不为空if (p == NULL || q == NULL)return false;//都不为空if (p->val != q->val)return false;//走到此位置说明p,q均不为空,且根的值是相等的return isSameTree(p->left, q->right) && isSameTree(p->right, q->right);
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot)
{if (root == NULL)return false;if (isSameTree(root, subRoot))return true;return isSubtree(root->left, subRoot) || isSubtree(root->right, subRoot);
}

5.二叉树的构建及遍历

//二叉树遍历
//通过前序遍历的数组构建二叉树
typedef char BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;
//递归的下一层++在返回时 不会影响上一层 所以要传地址
//注意:树的每个节点不是递归的时候链接上的 而是在返回的时候链接上的 root->left = BinaryTreeCreate(a,pi)
BTNode* BinaryTreeCreate(BTDataType* a, int* pi)
{if (a[*pi] == '#'){(*pi)++;return NULL;}BTNode* root = (BTNode*)malloc(sizeof(BTNode));if (root == NULL){perror("malloc fail");return NULL;}root->data = a[*pi];(*pi)++;root->left = BinaryTreeCreate(a, pi);root->right = BinaryTreeCreate(a, pi);return root;
}
void InOrder(BTNode* root)
{if (root == NULL){return;}InOrder(root->left);printf("%c ", root->data);InOrder(root->right);
}

6.二叉树的销毁

//二叉树销毁
//外面调用该函数的人置空
void BinaryTreeDestory(BTNode* root)
{if (root == NULL){return;}BinaryTreeDestory(root->left);BinaryTreeDestory(root->right);free(root);
}

7.判断二叉树是否是完全二叉树 

//判断二叉树是否是完全二叉树
//思路:层序遍历,一层一层走,遇到空以后,后续层序不能有非空,有非空就不是完全二叉树
//注:完全二叉树遇到空以后 后面节点一定都入队列了
//复制粘贴队列代码
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int QDataType;
typedef struct QueueNode
{struct QueueNode* next;QDataType data;
}QNode;
//第三种不用二级指针的方式 封装成结构体
typedef struct Queue
{QNode* head;QNode* tail;int size;
}Queue;
void QueueInit(Queue* pq);
void QueueDestory(Queue* pq);
void QueuePush(Queue* pq, QDataType x);
void QueuePop(Queue* pq);
//取队列头部数据
QDataType QueueFront(Queue* pq);
//取队列尾部数据
QDataType QueueBack(Queue* pq);
bool QueueEmpty(Queue* pq); 
int QueueSize(Queue* pq);
#include"Queue.h"
void QueueInit(Queue* pq)
{assert(pq);pq->head = pq->tail = NULL;pq->size = 0;
}
void QueueDestory(Queue* pq)
{assert(pq);QNode* cur = pq->head;while (cur){QNode* del = cur;cur = cur->next;free(del);}pq->head = pq->tail = NULL;
}
void QueuePush(Queue* pq, QDataType x)
{assert(pq);QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL){perror("malloc fail");exit(-1);}else{newnode->data = x;newnode->next = NULL;}if (pq->tail == NULL){pq->head = pq->tail = newnode;}else{pq->tail->next = newnode;pq->tail = newnode;}pq->size++;
}
void QueuePop(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));if (pq->head->next == NULL){free(pq->head);pq->head = pq->tail = NULL;}else{QNode* del = pq->head;pq->head = pq->head->next;free(del);del = NULL;}pq->size--;
}
//取队列头部数据
QDataType QueueFront(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->head->data;
}
//取队列尾部数据
QDataType QueueBack(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->tail->data;
}
bool QueueEmpty(Queue* pq)
{assert(pq);return pq->head == NULL && pq->tail == NULL;
}
int QueueSize(Queue* pq)
{assert(pq);/*QNode* cur = pq->head;int n = 0;while (cur){++n;cur = cur->next;}return n;*/return pq->size;
}
int BinaryTreeComplete(BTNode* root)
{Queue q;QueueInit(&q);if (root)QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* front = QueueFront(&q);QueuePop(&q);if (front == NULL){break;}QueuePush(&q, front->left);QueuePush(&q, front->right);}//遇到空以后 后面全是空 则是完全二叉树//遇到空以后 后面存在非空 则不是完全二叉树while (!QueueEmpty(&q)){BTNode* front = QueueFront(&q);QueuePop(&q);if (front != NULL){QueueDestory(&q);return false;}}QueueDestory(&q);return true;
}

                 

http://www.dinnco.com/news/18185.html

相关文章:

  • 沈阳市做网站的公司网站建站价格
  • 建设酒店网站ppt模板成品网站1688入口网页版
  • 上海建设局官方网站适合30岁女人的培训班
  • 青岛慧思网站建设网站推广方法
  • 网站副标题wordpress微信广告投放推广平台
  • 做返利网站如何操作流程磁力猫torrentkitty官网
  • 网站维护怎么做今日足球最新预测比分
  • 做网站什么空间比较好经典软文文案
  • 东阿网站制作新闻稿
  • 怎么查网站的空间商营销网站建设方案
  • 网站建设哪家公司便宜冯耀宗seo
  • 广州市住房与城乡建设网站如何进行新产品的推广
  • 快速做网站软件软文范例大全100字
  • 做翻译网站 知乎如何优化网页加载速度
  • 做网站宽度和长度布局软文广告发布平台
  • 可以做批发的跨境电商网站平台图片识别 在线识图
  • 百度蜘蛛池自动收录seo信息流优化师培训机构
  • 东莞市凤岗建设局网站做引流的公司是正规的吗
  • 零售网站建设中关村在线app
  • 网页设计个人seo推广平台
  • 政府网站栏目建设哪个平台做推广效果好
  • 可以做展示页面的网站搜索引擎网站入口
  • 汉字域名的网站东莞seo关键词
  • 免费做淘宝客网站百度网页版浏览器
  • 英文书 影印版 网站开发竞价排名的定义
  • 国务院办公厅关于加强政府网站信息内容建设的意见 首次千锋教育
  • 专业微网站建设公司首选公司哪家好中国腾讯和联通
  • 手机网站建站教程嘉兴seo计费管理
  • 网站建设在哪里办公页优化软件
  • 珠海营销型网站建设湖南竞价优化专业公司