我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

  • 基础

  • 框架

  • 情商

  • 算法

    • 说说对二分查找的理解
    • 说说对动态规划、分而治之的理解
    • 说说对图的理解
    • 说说对堆的理解
    • 说说对归并排序的理解
    • 说说对快速排序的理解
    • 说说对插入排序的理解
    • 说说对数据结构的理解
    • 说说对栈、队列的理解及应用
    • 说说对树(二叉树)的理解
      • 是什么
      • 二叉树
        • 条件
        • 分类
        • 遍历
    • 说说对算法的理解及应用场景
    • 说说对贪心算法,回溯算法的理解
    • 说说对选择排序的理解
    • 说说有哪些排序算法及理解
    • 说说算法复杂度有哪些?
    • 说说对冒泡排序的理解
  • 网络

  • 千锤百炼
  • 算法
fangdown
2021-10-14
目录

说说对树(二叉树)的理解

# 是什么

树: 非线性数据结构, 表示一对多的关系。

常用树为二叉树

# 二叉树

# 条件

  1. 是有序树
  2. 节点个数不超过 2,即只能是 0、1、2

# 分类

  1. 满二叉树: 除叶子节点,每个节点个数为 2 个

  1. 完全二叉树: 除叶子节点,最后一层节点依次从左到右排列

# 遍历

  • 前序遍历
  • 中序遍历
  • 后续遍历

    遍历区分: 访问根节点的表现

  1. 递归实现
const tree = (root) => {
  if (!root) return;
  console.log(root.value);
  tree(root.left);
  tree(root.right);
};

const tree = (root) => {
  if (!root) return;
  tree(root.left);
  console.log(root.value);
  tree(root.right);
};

const tree = (root) => {
  if (!root) return;
  tree(root.left);
  tree(root.right);
  console.log(root.value);
};
  1. 非递归
const tree = (root) => {
  if (!root) return;
  const stack = [root];
  while (stack.length) {
    const current = stack.pop();
    console.log(current.value); // 访问根
    if (current.left) stack.push(current.left);
    if (current.right) stack.push(current.right);
  }
};
#算法
上次更新: 2021/12/19, 18:05:42
说说对栈、队列的理解及应用
说说对算法的理解及应用场景

← 说说对栈、队列的理解及应用 说说对算法的理解及应用场景→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式