新洲网站建设,app制作平台源码,自己做cdk兑换码网站,网站SEO的评价题目
给定一棵二叉树#xff0c;如果站在该二叉树的右侧#xff0c;那么从上到下看到的节点构成二叉树的右侧视图。例如#xff0c;图7.6中二叉树的右侧视图包含节点8、节点10和节点7。请写一个函数返回二叉树的右侧视图节点的值。
分析
既然这个题目和二叉树的层相关如果站在该二叉树的右侧那么从上到下看到的节点构成二叉树的右侧视图。例如图7.6中二叉树的右侧视图包含节点8、节点10和节点7。请写一个函数返回二叉树的右侧视图节点的值。
分析
既然这个题目和二叉树的层相关因此可以应用广度优先搜索来解决。由于需要区分二叉树不同的层因此在遍历时把不同层的节点放入不同的队列也就是利用两个队列分别存放当前遍历的层和下一层的节点。
解
public class Test {public static void main(String[] args) {TreeNode node8 new TreeNode(8);TreeNode node6 new TreeNode(6);TreeNode node10 new TreeNode(10);TreeNode node5 new TreeNode(5);TreeNode node7 new TreeNode(7);node8.left node6;node8.right node10;node6.left node5;node6.right node7;ListInteger result rightSideView(node8);System.out.println(result);}public static ListInteger rightSideView(TreeNode root) {ListInteger view new LinkedList();if (root null) {return view;}QueueTreeNode queue1 new LinkedList();QueueTreeNode queue2 new LinkedList();queue1.offer(root);while (!queue1.isEmpty()) {TreeNode node queue1.poll();if (node.left ! null) {queue2.offer(node.left);}if (node.right ! null) {queue2.offer(node.right);}if (queue1.isEmpty()) {view.add(node.val);queue1 queue2;queue2 new LinkedList();}}return view;}
}