循环二叉树(去哪儿2017校招真题)

原创 2017年09月13日 20:24:33

题目描述

循环二叉树(去哪儿2017校招真题)

思路分析

使用一个map存放关联的父子节点(key:子节点,value:父节点),key & value初始化为node1节点
使用一个Node类型对象作为父节点,对每一步,进行如下操作:
    若向左走并且左子节点不为空,则将左子节点及其父节点放入map,更新父节点p为其左子节点;
    若向右走并且右子节点不为空,则将右子节点及其父节点放入map,更新父节点p为其右子节点;
    若回退并且父节点不为空,更新父节点p为其父节点 
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

class Node {
    public int v;
    public Node left;
    public Node right;
}

class Tree {
    public Node node1;
    public Node node2;
    public Node node3;
    public Node node4;
    public Node node5;

    public Tree() {
        node1 = new Node();
        node2 = new Node();
        node3 = new Node();
        node4 = new Node();
        node5 = new Node();

        node1.v = 1;
        node1.left = node2;
        node1.right = node3;

        node2.v = 2;
        node2.left = node3;
        node2.right = node4;

        node3.v = 3;
        node3.left = node4;
        node3.right = node5;

        node4.v = 4;
        node4.left = node5;
        node4.right = node1;

        node5.v = 5;
        node5.left = node1;
        node5.right = node2;

    }
}

public class Main {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = null;

        while (sc.hasNext()) {
            str = sc.nextLine();

            // 存放关联的父子节点的map
            Map<Node, Node> map = new HashMap<Node, Node>();
            Tree tree = new Tree();
            map.put(tree.node1, tree.node1);

            // 父节点
            Node p = tree.node1;    

            for (int i = 0; i < str.length(); i++) {
                // 向左走
                if (str.charAt(i) == 'L') {
                    if (p.left != null) {
                        map.put(p.left, p);
                        p = p.left;
                    }
                }

                // 向右走
                if (str.charAt(i) == 'R') {
                    if (p.right != null) {
                        map.put(p.right, p);
                        p = p.right;
                    }
                }

                // 回退
                if (str.charAt(i) == 'B') {
                    if (map.get(p) != null) p = map.get(p);
                }
            }
            System.out.println(p.v);
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

小米2017校园招聘笔试题

句子反转 时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 给定一个句子(只包含字母和空格), ...
  • lezong2011
  • lezong2011
  • 2016年09月23日 21:44
  • 1598

京东2017校招算法题

转自Jing0 's blog 岗位:Java 开发笔试时间:09/05/2016 第一题 购物清单 题目大意是这样的:有多组数据,每组开始给出 n 和 m (m, n ≤ 10...
  • fleapo
  • fleapo
  • 2016年09月14日 15:31
  • 301

爱奇艺2017校园招聘笔试题

成长值计算 时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 爱奇艺累计有2000万会员,为了提...
  • lezong2011
  • lezong2011
  • 2016年10月17日 23:24
  • 3195

统计字符(去哪儿2017校招真题)

import java.util.HashMap; import java.util.Map; import java.util.Scanner;/** * 题目描述: * * 给定一个英文字...
  • CSDN_FlyYoung
  • CSDN_FlyYoung
  • 2017年09月04日 16:30
  • 181

今日头条2017校招笔试题

一些出题人出了n道题,每道题有一个难度系数,难度系数满足以下关系的3道题可以组成一套试卷,为了使这n道题使用上且只能使用一次,问出题人最少还要出多少题? a b-a c-b 直接附上代码: #in...
  • panzw2015
  • panzw2015
  • 2016年09月24日 10:54
  • 3146

联通图形(去哪儿2017校招真题)

题目描述联通图形(去哪儿2017校招真题)思路分析 对于输入的一行数据, 使用正则表达式将其拆分为字符串数组,对字符串数组中的每个元素进行如下操作: 给定一个队列,一个顺序表,队列用于存放当前元素,...
  • CSDN_FlyYoung
  • CSDN_FlyYoung
  • 2017年09月12日 18:59
  • 1077

2017腾讯校招面试回忆(成功拿到offer)

我本来报的岗位是企业事业群,后来把我分配到了技术工程群 三面是9月23日,到现在,最后的结果还没出来,我也不知道是过了还是挂了,先写出来,希望对明年找工作的朋友们一点帮助 一面   21号 大概1...
  • dlf123321
  • dlf123321
  • 2016年09月26日 15:18
  • 9399

2017微软秋季校园招聘在线编程笔试-#1400 : Composition

http://hihocoder.com/problemset/problem/1400 题意理解:有限制的两个不能相邻,i之和前面剩下的那一个相关,所以可以f【i】【ch】的动态规...
  • u013625492
  • u013625492
  • 2017年09月19日 20:57
  • 278

网易2018校园招聘Java工程师笔试卷

1.下面关于操作系统的进程说法正确的是? 只有使用了多进程才会发生死锁。 同一个进程的多个线程共享状况为堆共享,栈私有。 系统中进程数目越多,CPU利用率越高。 进程和线程都有独立的地址空间。...
  • javasvip
  • javasvip
  • 2017年09月10日 22:04
  • 187

百度2017校招面试总结

百度2017校招面试总结之前报的是百度北京总部的C++软件开发岗,有幸通过了百度2017年校招的笔试,在9月24号参加了百度校招的面试,时间约在了上午11点,总共面了三面。一面一面主要问了以下几个问题...
  • pc123455
  • pc123455
  • 2016年11月24日 13:54
  • 3013
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:循环二叉树(去哪儿2017校招真题)
举报原因:
原因补充:

(最多只允许输入30个字)