一、对象调用方法时,如何在方法中使用对象,例如(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了
- 先序遍历 和 中序遍历 和 后序遍历 展示的结果是不一样的,大部分都是使用先序遍历来回显