이진 트리의 전순 주사 (두 가지)

1. 탐색 생각 (루트 주위)

주 : 1마다 목록이 비어있을 것입니다 ;.

           2. 필요) 뒷면의 위치를 ​​기록합니다
 

class Solution {
    List<Integer> list=new ArrayList<>();
    private void preorder(TreeNode root){
        if(root!=null){
        list.add(root.val);
        preorder(root.left);
        preorder(root.right);
        }
    }
    public List<Integer> preorderTraversal(TreeNode root) {
        list.clear();//清空
        preorder(root);
        return list;
    }
}

2. 사고의 개요 (왼쪽 서브 트리를 횡단하여 첫 번째, 그리고 마지막 요약 동안 오른쪽 서브 트리를 통과)

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        if(root==null)
        {
            return new ArrayList<>();//当root为空时,返回一个空链表
        }
        List<Integer> left=preorderTraversal(root.left);//求出所有左子树节点
        List<Integer> right=preorderTraversal(root.right);//求出右子树结点
        List<Integer> list=new ArrayList<>();
        list.add(root.val);
        list.addAll(left);//将链表节点全部进行尾插到新链表中
        list.addAll(right);
        return list;
    }
}

 

게시 40 개 원래 기사 · 원 찬양 4 · 조회수 873

추천

출처blog.csdn.net/weixin_44919969/article/details/101107608