抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

总时间限制: 1000ms 内存限制: 65536kB

描述

Background
Binary trees are a common data structure in computer science. In this problem we will look at an infinite binary tree where the nodes contain a pair of integers. The tree is constructed like this:
The root contains the pair (1, 1).
If a node contains (a, b) then its left child contains (a + b, b) and its right child (a, a + b)

Problem

Given the contents (a, b) of some node of the binary tree described above, suppose you are walking from the root of the tree to the given node along the shortest possible path. Can you find out how often you have to go to a left child and how often to a right child?

输入

The first line contains the number of scenarios.
Every scenario consists of a single line containing two integers i and j (1 <= i, j <= 2*109) that represent
a node (i, j). You can assume that this is a valid node in the binary tree described above.

输出

The output for every scenario begins with a line containing “Scenario #i:”, where i is the number of the scenario starting at 1. Then print a single line containing two numbers l and r separated by a single space, where l is how often you have to go left and r is how often you have to go right when traversing the tree from the root to the node given in the input. Print an empty line after every scenario.

总时间限制: 1000ms 内存限制: 65535kB

描述

给定一棵二叉树,在二叉树上执行两个操作:

  1. 节点交换
    把二叉树的两个节点交换。
  2. 前驱询问
    询问二叉树的一个节点对应的子树最左边的节点。

输入

第一行输出一个整数 t (t <= 100),代表测试数据的组数。

对于每组测试数据,第一行输入两个整数 n m,n 代表二叉树节点的个数,m 代表操作的次数。

随后输入 n 行,每行包含 3 个整数 X Y Z,对应二叉树一个节点的信息。X 表示节点的标识,Y 表示其左孩子的标识,Z 表示其右孩子的标识。

再输入 m 行,每行对应一次操作。每次操作首先输入一个整数 type。

总时间限制: 1000ms 内存限制: 65535kB

描述

给定一棵二叉树,求该二叉树的深度

二叉树深度定义:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的节点个数为树的深度

输入

第一行是一个整数 n,表示二叉树的结点个数。二叉树结点编号从 1 到 n,根结点为 1,n <= 10
接下来有 n 行,依次对应二叉树的 n 个节点。
每行有两个整数,分别表示该节点的左儿子和右儿子的节点编号。如果第一个(第二个)数为 - 1 则表示没有左(右)儿子

输出

输出一个整型数,表示树的深度

样例输入

Problem: 94. 二叉树的中序遍历

思路

我们都知道中序遍历是左边 ——> 中间 ——> 右边

解题方法

  1. 一直向左边走
  2. 到达左边尽头后弹出并打印,然后向右边走一个。
  3. 继续一直向左边走。
  4. 到达左边尽头后弹出并打印,然后向右边走一个。
  5. 结束条件是 p 和栈 S 都为空。

复杂度

时间复杂度:

O(n)O(n)

空间复杂度: