二叉搜索树的遍历搜索(Java实现)

1.二叉搜索树的概念
一棵二叉搜索树是以一棵二叉树来组织的,这样的一棵树可以以链表的数据结构来表示,其中的每个结点就是一个对象。
在这里插入图片描述

2.二叉搜索树结点对象的属性
(1)key(关键字,用于代表整个对象)
(2)基本数据和信息
(3)left、right和p,分别指向结点的左子结点,右子结点,父结点(父节点的使用较少时,可以省略)

 class TreeNode {
   
      int key; //关键字
      TreeNode left; //左节点
      TreeNode right;  //右节点
      TreeNode() {
   }
      TreeNode(int val) {
    this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {
   
          this.val = val;
          this.left = left;
          this.right = right;
      }
  }

3.二叉搜索树的最基本构造规则
对于任何结点node,其左子树的每一个结点的key不能大于node.key,其右子树的每一个结点的key不能小于node.key。这一点构造规则可以引出二叉搜索树的一个性质——如果childNode是node的左子树上的一个结点,则childNode.key<=node.key,同理,如果在右子树上,则childNode.key>=node.key。

4.二叉树搜索的遍历
(1)二叉树的遍历主要有2种方法,分别是BFS广度搜索遍历和DFS深度搜索遍历,其中广度搜索遍历的核心是对于队列这一数据结构的应用;深度搜索遍历有两种方式,一种是通过递归函数的设计进行遍历,另一种是利用栈这一数据结构进行遍历

1>DFS

//递归遍历
 public void search(TreeNode root){
   
        
        if(root==null)
           return;
        search(root.left);
        search(root.right);
    }
  //利用栈进行遍历
  public void search(TreeNode root){
   
     public void search(TreeNode root) {
   
        TreeNode node = root;
        Stack<TreeNode> DFS = new Stack<>();
        while (!DFS.isEmpty() || node != null) {
   
            while (node != null) {
   
                DFS.
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值