java二叉树1

一、树的基本概念

 

1. 树的定义与特点

- 树是一种非线性结构 ,每个节点能延伸出多个子节点,每个子节点只有一个父节点。如文件目录结构,“此电脑”是根节点,磁盘分区、文件夹是子节点 。

- 介绍了节点的度(一个节点含子树的个数 )、树的度(树中节点度的最大值 )、叶子节点(度为0的节点 )、双亲节点、孩子节点等概念。

2. 树的表示形式

- 提到双亲和孩子表示法等多种表示方式,重点讲解孩子表示法,用类表示节点,包含节点值和子节点列表 。

 

二、二叉树相关

 

1. 二叉树的存储

采用孩子表示法,节点类包含值、左子节点和右子节点 。构建二叉树示例代码:

 

class Node {

    String val;

    Node left;

    Node right;

    Node(String val) {

        this.val = val;

    }

}

public static Node createTree() {

    Node a = new Node("A");

    Node b = new Node("B");

    Node c = new Node("C");

    Node d = new Node("D");

    Node e = new Node("E");

    Node f = new Node("F");

    Node g = new Node("G");

    a.left = b;

    a.right = c;

    b.left = d;

    b.right = e;

    c.right = f;

    e.left = g;

    return a;

}

 

 

2. 二叉树的遍历

- 先序遍历

- 顺序:先访问根节点,再递归遍历左子树,最后递归遍历右子树 。

- 代码:

 

public static void preOrder(Node root) {

    if (root == null) {

        return;

    }

    System.out.print(root.val + " ");

    preOrder(root.left);

    preOrder(root.right);

}

 

 

- 中序遍历

- 顺序:先递归遍历左子树,再访问根节点,最后递归遍历右子树 。

- 代码:

 

public static void inOrder(Node root) {

    if (root == null) {

        return;

    }

    inOrder(root.left);

    System.out.print(root.val + " ");

    inOrder(root.right);

}

 

 

- 后序遍历

- 顺序:先递归遍历左子树,再递归遍历右子树,最后访问根节点 。

- 代码:

 

public static void postOrder(Node root) {

    if (root == null) {

        return;

    }

    postOrder(root.left);

    postOrder(root.right);

    System.out.print(root.val + " ");

}

 

 

- 层序遍历

- 顺序:按层从左到右访问节点 。

- 实现方式:借助队列,先将根节点入队,然后循环取出队首元素,访问其值,并将其左右子节点入队(若存在 ) 。

- 代码:

 

public static void levelOrder(Node root) {

    if (root == null) {

        return;

    }

    Queue<Node> queue = new LinkedList<>();

    queue.offer(root);

    while (!queue.isEmpty()) {

        Node cur = queue.poll();

        System.out.print(cur.val + " ");

        if (cur.left != null) {

            queue.offer(cur.left);

        }

        if (cur.right != null) {

            queue.offer(cur.right);

        }

    }

}

 

 

3. 完全二叉树

- 规则:进行层序遍历时,第一阶段每个访问节点应有两个子树,遇到无子树或只有左子树节点进入第二阶段;第二阶段每个节点必须无子树,否则不是完全二叉树 。

- 判定及相关特性:先序遍历第一个元素是根节点,后序遍历最后一个元素是根节点;还原二叉树至少需两个序列且包含中序结果 。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值