(译)二叉树的深度优先搜索

本文介绍了一种实现二叉树深度优先搜索的方法:利用栈来存储节点,并依次弹出节点并打印其数据,同时将子节点按顺序压入栈中。此过程重复直至栈为空。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接: Depth First Search/Traversal in Binary Tree

目标: -给定一个二叉树,进行深度优先搜索/遍历

方法:

  • 方法非常简单,使用栈
  • 首先把根节点加入栈
  • 从栈中弹出一个元素,然后把它的右孩子和左孩子加入栈
  • 弹出一个元素并打印出来,然后把它的孩子加入栈
  • 重复上面的两个步骤直到栈为空.

例子:

DFS

完整代码:

public class BSTDFS {
    public void DFS(Node root) {
        Stack<Node> s = new Stack<Node>();
        s.add(root);
        while (s.isEmpty() == false) {
            Node x = s.pop();
            if(x.right!=null) s.add(x.right);
            if(x.left!=null) s.add(x.left);         
            System.out.print(" " + x.data);
        }
    }
    public static void main(String args[]){
        Node root = new Node(1);
        root.left = new Node(2);
        root.left.left = new Node(4);
        root.left.right = new Node(5);
        root.right = new Node(3);
        root.right.left = new Node(6);
        root.right.right = new Node(7);

        BSTDFS b = new BSTDFS();
        System.out.println("Depth-First-Search : ");
        b.DFS(root);
    }
}

class Node {
    int data;
    Node left;
    Node right;

    public Node(int data) {
        this.data = data;
        left = null;
        right = null;
    }
}

输出:

Depth-First-Search : 
 1 2 4 5 3 6 7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值