mirror of
https://github.com/xlucn/PAT.git
synced 2026-11-04 00:38:13 +08:00
37 lines
3.4 KiB
HTML
37 lines
3.4 KiB
HTML
Is It a Binary Search Tree
|
|
<div class="ques-view"><p>A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:</p>
|
|
<ul>
|
|
<li>The left subtree of a node contains only nodes with keys less than the node's key.</li>
|
|
<li>The right subtree of a node contains only nodes with keys greater than or equal to the node's key.</li>
|
|
<li>Both the left and right subtrees must also be binary search trees.</li>
|
|
</ul>
|
|
<p>If we swap the left and right subtrees of every node, then the resulting tree is called the <strong>Mirror Image</strong> of a BST.</p>
|
|
<p>Now given a sequence of integer keys, you are supposed to tell if it is the preorder traversal sequence of a BST or the mirror image of a BST.</p>
|
|
<h3 id="input-specification-">Input Specification:</h3>
|
|
<p>Each input file contains one test case. For each case, the first line contains a positive integer <span class="katex"><span class="katex-mathml"><math><mrow><mi>N</mi></mrow>N</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.68333em;"></span><span class="strut bottom" style="height:0.68333em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit" style="margin-right:0.10903em;">N</span></span></span></span> (<span class="katex"><span class="katex-mathml"><math><mrow><mo>≤</mo><mn>1</mn><mn>0</mn><mn>0</mn><mn>0</mn></mrow>\le 1000</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.78041em;vertical-align:-0.13597em;"></span><span class="base textstyle uncramped"><span class="mrel">≤</span><span class="mord mathrm">1</span><span class="mord mathrm">0</span><span class="mord mathrm">0</span><span class="mord mathrm">0</span></span></span></span>). Then <span class="katex"><span class="katex-mathml"><math><mrow><mi>N</mi></mrow>N</math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.68333em;"></span><span class="strut bottom" style="height:0.68333em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit" style="margin-right:0.10903em;">N</span></span></span></span> integer keys are given in the next line. All the numbers in a line are separated by a space.</p>
|
|
<h3 id="output-specification-">Output Specification:</h3>
|
|
<p>For each test case, first print in a line <code>YES</code> if the sequence is the preorder traversal sequence of a BST or the mirror image of a BST, or <code>NO</code> if not. Then if the answer is <code>YES</code>, print in the next line the postorder traversal sequence of that tree. All the numbers in a line must be separated by a space, and there must be no extra space at the end of the line.</p>
|
|
<h3 id="sample-input-1-">Sample Input 1:</h3>
|
|
<pre><code class="lang-in">7
|
|
8 6 5 7 10 8 11
|
|
</code></pre>
|
|
<h3 id="sample-output-1-">Sample Output 1:</h3>
|
|
<pre><code class="lang-out">YES
|
|
5 7 6 8 11 10 8
|
|
</code></pre>
|
|
<h3 id="sample-input-2-">Sample Input 2:</h3>
|
|
<pre><code class="lang-in">7
|
|
8 10 11 8 6 7 5
|
|
</code></pre>
|
|
<h3 id="sample-output-2-">Sample Output 2:</h3>
|
|
<pre><code class="lang-out">YES
|
|
11 8 10 7 5 6 8
|
|
</code></pre>
|
|
<h3 id="sample-input-3-">Sample Input 3:</h3>
|
|
<pre><code class="lang-in">7
|
|
8 6 8 5 10 9 11
|
|
</code></pre>
|
|
<h3 id="sample-output-3-">Sample Output 3:</h3>
|
|
<pre><code class="lang-out">NO
|
|
</code></pre>
|
|
</div> |