本文共 2215 字,大约阅读时间需要 7 分钟。
使用二叉树层序遍历的思想 并用size来记录每一层的节点个数,当size==1时就是每一层的最后一个
/** * Definition for a binary tree node. * 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; * } * } */class Solution { public ListrightSideView(TreeNode root) { List list = new ArrayList (); if(root == null) { return list; } Queue queue = new LinkedList<>(); queue.offer(root); while(!queue.isEmpty()) { int size = queue.size(); //保存某一层的节点个数 while(size > 0) { if(size == 1) { //说明到某一层的最右边了 list.add(queue.peek().val); } TreeNode cur = queue.poll(); size--; if(cur.left != null) { queue.offer(cur.left); } if(cur.right != null) { queue.offer(cur.right); } } } return list; }}
/** * Definition for a binary tree node. * 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; * } * } */class Solution { Listlist = new ArrayList<>(); public List rightSideView(TreeNode root) { if(root == null) { return list; } dfs(root, 0); return list; } public void dfs(TreeNode root, int depth) { if(root == null) { return; } if(list.size() == depth) { list.add(root.val); } //每进入一次递归 深度加一 depth++; dfs(root.right, depth); dfs(root.left, depth); }}
转载地址:http://cmhzi.baihongyu.com/