数据结构--树与二叉树

数据结构分类

集合

线性结构(一对一)

树形结构(一对多)

图结构(多对多)

数据结构三要素

1、逻辑结构

2、数据的运算

3、存储结构(物理结构)

树的概念

树的分类

满二叉树和完全二叉树
二叉排序树
平衡二叉树
二叉树分类总结

二叉树的存储结构

顺序存储
链式存储

二叉树的遍历

先序遍历
javascript 复制代码
class Node {
            constructor(value) {
                this.value = value;
                this.left = null;
                this.right = null;
            }
        }
        const tree = new Node('A');

        tree.left = new Node('B');
        tree.right = new Node('C');
        tree.left.left = new Node('D');
        tree.left.right = new Node('E');
        tree.right.left = new Node('F');
        tree.right.right = new Node('G');
        // 前序遍历
        const preorderTraversal = (root) => {
            if (root === null) return;
            console.log(root.value); // 访问根节点
            preorderTraversal(root.left); // 遍历左子树
            
            preorderTraversal(root.right); // 遍历右子树
        };

        preorderTraversal(tree);
中序遍历
javascript 复制代码
class Node {
            constructor(value) {
                this.value = value;
                this.left = null;
                this.right = null;
            }
        }
        const tree = new Node('A');

        tree.left = new Node('B');
        tree.right = new Node('C');
        tree.left.left = new Node('D');
        tree.left.right = new Node('E');
        tree.right.left = new Node('F');
        tree.right.right = new Node('G');
        // 前序遍历
        const preorderTraversal = (root) => {
            if (root === null) return;
            preorderTraversal(root.left); // 遍历左子树
            console.log(root.value); // 访问根节点
            
            preorderTraversal(root.right); // 遍历右子树
        };

        preorderTraversal(tree);
后序遍历
javascript 复制代码
class Node {
            constructor(value) {
                this.value = value;
                this.left = null;
                this.right = null;
            }
        }
        const tree = new Node('A');

        tree.left = new Node('B');
        tree.right = new Node('C');
        tree.left.left = new Node('D');
        tree.left.right = new Node('E');
        tree.right.left = new Node('F');
        tree.right.right = new Node('G');
        // 前序遍历
        const preorderTraversal = (root) => {
            if (root === null) return;
            preorderTraversal(root.left); // 遍历左子树
            
            preorderTraversal(root.right); // 遍历右子树
            console.log(root.value); // 访问根节点
        };

        preorderTraversal(tree);

遍历构造二叉树

javascript 复制代码
        const generateTreeHelper = (node, n) => {
            node.left = new TreeNode(n);
            node.right = new TreeNode(n);
            n -= 1;

            if (n > 0) {
                generateTreeHelper(node.left, n);
                generateTreeHelper(node.right, n);
            }
        };

        const generateTree = (n) => {
            let root = null;

            if (n <= 0) return root;

            root = new TreeNode(3);
            generateTreeHelper(root, n - 1);

            return root;
        };

        console.log('--------root', generateTree(3));
相关推荐
好易学·数据结构9 小时前
可视化图解算法56:岛屿数量
数据结构·算法·leetcode·力扣·回溯·牛客网
Ashlee_code14 小时前
裂变时刻:全球关税重构下的券商交易系统跃迁路线图(2025-2027)
java·大数据·数据结构·python·云原生·区块链·perl
闻缺陷则喜何志丹15 小时前
【带权的并集查找】 P9235 [蓝桥杯 2023 省 A] 网络稳定性|省选-
数据结构·c++·蓝桥杯·洛谷·并集查找
jie*15 小时前
python(one day)——春水碧于天,画船听雨眠。
开发语言·数据结构·python·算法·线性回归
草莓熊Lotso17 小时前
【LeetCode刷题指南】--数组串联,合并两个有序数组,删除有序数组中的重复项
c语言·数据结构·其他·刷题
weixin_4196583117 小时前
数据结构之B-树
java·数据结构·b树
H_HX_xL_L17 小时前
数据结构的算法分析与线性表<1>
数据结构·算法
overFitBrain17 小时前
数据结构-2(链表)
数据结构
xienda17 小时前
数据结构排序算法总结(C语言实现)
数据结构·算法·排序算法
科大饭桶17 小时前
数据结构自学Day8: 堆的排序以及TopK问题
数据结构·c++·算法·leetcode·二叉树·c