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

网站开发 哪个工具更快大数据查询个人信息

网站开发 哪个工具更快,大数据查询个人信息,教育类网站建站,做网站不靠点击收费的二叉树种类 满二叉树:每个非叶子节点都有且只有两个子节点。 和完全二叉树:除了最底层外,其他各层都是满的;最底层的节点都集中在左侧。 二叉搜索树:对于任意节点 u,左子树上所有节 点的值都小于 u.val…

二叉树种类

满二叉树:每个非叶子节点都有且只有两个子节点。

和完全二叉树:除了最底层外,其他各层都是满的;最底层的节点都集中在左侧。

二叉搜索树:对于任意节点 u,左子树上所有节

点的值都小于 u.val,右子树上所有节点的值都大于 u.val

平衡二叉树任意节点的左右子树高度差 ≤ 1。

二叉树的存储方式

「二叉树可以链式存储,也可以顺序存储。」

那么链式存储方式就用指针, 顺序存储的方式就是用数组。

遍历算法

  1. 深度优先遍历(DFS)

    • 前序(Pre‑Order):根 → 左 → 右

      /*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
      class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new LinkedList<>();preorder(root, res);return res;}void preorder(TreeNode root,List<Integer> list){if(root == null){return;}list.add(root.val);preorder(root.left,list);        preorder(root.right,list);}
      }
    • 中序(In‑Order):左 → 根 → 右

      
      class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new LinkedList<>();inorder(root, res);return res;}void inorder(TreeNode root,List<Integer> list){if(root == null){return;}inorder(root.left,list);list.add(root.val);inorder(root.right,list);}
      }
    • 后序(Post‑Order):左 → 右 → 根

      
      class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new LinkedList<>();inorder(root, res);return res;}void inorder(TreeNode root,List<Integer> list){if(root == null){return;}           inorder(root.left,list);        inorder(root.right,list);list.add(root.val);}
      }
  2. 广度优先遍历(BFS)/层序(Level‑Order)

    • 按层自上而下、同层从左到右依次访问,通常用队列实现。

 二叉树的定义

public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}

递归写法 

  1. 确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。

  2. 确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。

  3. 确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

以前序遍历为例:

1.首先,确认参数,因为我们访问的是节点,所以参数要包含节点对象,其次要返回访问的数值,所以也要包含一个list对象保存访问的值

2.每一层递归的终止条件就是遇见空节点,所以判断当前节点是否为空,为空就返回

3. 前序遍历是中左右的顺序,所以在单层递归的逻辑,是要先取中节点的数值,代码如下:

迭代解决遍历

前序:因为迭代使用栈,而出栈顺序是先进后出,所以我们在遍历的时候要改变遍历的顺序,先遍历右节点,在遍历左节点,这时候就是左节点先出,符合根左右的习惯

class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> list = new ArrayList<>();if(root == null){return list;}Stack<TreeNode> s = new Stack<>();s.push(root);while(!s.isEmpty()){TreeNode node = s.pop();list.add(node.val);if(node.right != null){s.push(node.right);}if(node.left != null){s.push(node.left);}}return list;
}}

中序:在使用迭代法写中序遍历,就需要借用指针的遍历来帮助访问节点,栈则用来处理节点上的元素。

// 中序遍历顺序: 左-中-右 入栈顺序: 左-右
class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();if (root == null){return result;}Stack<TreeNode> stack = new Stack<>();TreeNode cur = root;while (cur != null || !stack.isEmpty()){if (cur != null){stack.push(cur);cur = cur.left;}else{cur = stack.pop();result.add(cur.val);cur = cur.right;}}return result;}
}

后序:// 后序遍历顺序 左-右-中 入栈顺序:中-左-右 出栈顺序:中-右-左, 最后翻转结果

class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();if (root == null){return result;}Stack<TreeNode> stack = new Stack<>();stack.push(root);while (!stack.isEmpty()){TreeNode node = stack.pop();result.add(node.val);if (node.left != null){stack.push(node.left);}if (node.right != null){stack.push(node.right);}}Collections.reverse(result);return result;}
}

 层次遍历

思路:需要借助一个辅助队列来完成统计,即一层一层的入队

http://www.dtcms.com/wzjs/175326.html

相关文章:

  • 用laravel做的网站如何创建个人网站免费
  • 线上平面设计培训班网站seo优化方案项目策划书
  • 大连网站设计九首选仟亿科技营销策划经典案例
  • 网站百度收录秒收方法网站优化推广费用
  • 如何用七牛云做视频网站百度收录好的免费网站
  • 网站建设费用申请ip域名查询网
  • 日本做爰漫画网站百度收录网站入口
  • 买了阿里云怎么做网站柳州网站建设
  • 网站建设403网页设计教程
  • 安阳哪里做360网站网络策划与营销
  • 产品外观设计流程百度移动排名优化软件
  • 大神做的动漫网站怎么发帖子做推广
  • 机械加工订单平台重庆网站seo建设哪家好
  • 哪里做网站靠谱网络营销渠道可分为
  • 江阴网站开发公司电话做网站的软件
  • 长垣县建站塔山双喜淘宝怎么设置关键词搜索
  • 岳阳网站建设哪里有网络推广员工作内容
  • 做网站ps分辨率给多少泰州百度seo公司
  • 如何申请微信企业号seo关键词排名优化手机
  • jQuery网站建设中倒计时代码市场调研报告ppt
  • 搭建微信小程序需要什么东莞seo计费
  • 做网站在什么地方找2022最新免费的推广引流软件
  • 五金制品网站源码太原百度seo排名
  • 南联网站建设哪家好b2b平台有哪几个
  • 南昌电商网站设计手机优化软件排名
  • 网站更新文章首页不显示seo性能优化
  • 北京和君网站建设某个产品营销推广方案
  • 帮人做诈骗网站获利35万退赃部分深圳百度推广
  • 怎么做租房网站百度竞价点击神器奔奔
  • 泰安个人代做网站永久免费域名申请