数据结构--树与二叉树

数据结构分类

集合

线性结构(一对一)

树形结构(一对多)

图结构(多对多)

数据结构三要素

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));
相关推荐
Univin6 小时前
C++(10.4)
开发语言·数据结构·c++
Jayden_Ruan13 小时前
C++十进制转二进制
数据结构·c++·算法
Haooog13 小时前
98.验证二叉搜索树(二叉树算法题)
java·数据结构·算法·leetcode·二叉树
lixinnnn.15 小时前
贪心:火烧赤壁
数据结构·c++·算法
前端 贾公子16 小时前
《Vuejs设计与实现》第 5 章(非原始值响应式方案)下 Set 和 Map 的响应式代理
数据结构·算法
快乐是一切16 小时前
PDF底层格式之水印解析与去除机制分析
前端·数据结构
MHJ_17 小时前
Multi-Metric Integration(多指标集成)
数据结构
小马学嵌入式~18 小时前
堆排序原理与实现详解
开发语言·数据结构·学习·算法
_给我学起来18 小时前
数据结构:树
数据结构
LGL6030A1 天前
数据结构学习(2)——多功能链表的实现(C语言)
数据结构·学习·链表