参考案例之“对象调用方法时,如何在方法中使用对象,例如(root.display()的display方法中使用root)”

一、对象调用方法时,如何在方法中使用对象,例如(root.display()的display方法中使用root)

1.测试方法

@Test
public void suanfa24()
{
    TreeNode root = new TreeNode(3, new TreeNode(9), new TreeNode(20, new TreeNode(15), new TreeNode(7)));

    System.out.println("root.display() = " + root.display());
}

 

2.树节点的被调用方法display()

package com.bessky.pss.wzw.SuanFa;

import java.util.ArrayList;
import java.util.List;

/**
 * 树节点类
 *
 * @author 王子威
 * @date 2022/7/27
 */
public class TreeNode
{
    int val;
    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;
    }

    /**
     * 遍历显示
     *
     * @return
     */
    public String display()
    {
        // 创建存储先序遍历后的结果
        List<Integer> results = new ArrayList<>();

        // 调用:递归方法
        this.inorder(this, results);

        return results.toString();
    }

    /**
     * 递归方法体
     *
     * @param root
     * @param results
     */
    public void inorder(TreeNode root, List<Integer> results)
    {
        if (root == null)
        {
            return ;
        }
        // 调用:当最左时就存储 || 或左没有时存储
        results.add(root.val);
        // 调用:递归方法(先把最左边的拿到)
        inorder(root.left, results);
        // 调用:递归方法(左没有时就递归右边)
        inorder(root.right, results);
    }
}

 

3.总结

  • 这里直接使用this 就是对象本身了,也就是root.display()的root了
  • 先序遍历 和 中序遍历 和 后序遍历 展示的结果是不一样的,大部分都是使用先序遍历来回显
posted @ 2023-01-12 10:33  骚哥  阅读(34)  评论(0编辑  收藏  举报