树倒着打印输出

2024-04-26 22:28
文章标签 打印输出 树倒

本文主要是介绍树倒着打印输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路

先向右遍历,同时空格也要变多,那么就先prt(root->right,space+cnt) 其中space是离最左边多远,cnt是每次叠加的有多远

输出最右边端点 和 空行

再向左遍历

同样prt(root->left,space+cnt)

代码

#include <iostream>
#include <stack>
using namespace std;typedef struct Node
{struct Node *left;struct Node *right;char data;
} N, *Tr;void create(Tr *t)
{char ch;ch = getchar();if (ch == '.'){*t = NULL;}else{*t = (N *)malloc(sizeof(N));(*t)->data = ch;create(&(*t)->left);create(&(*t)->right);}
}
void printSpace(int num)
{for (int i = 0; i < num; i++){cout << " ";}
}
void prt(Tr root, int space)
{if (root == NULL)return;int cnt = 1;prt(root->right, space + cnt);printSpace(space);cout << root->data << endl;prt(root->left, space + cnt);
}
int main()
{Tr Tree;create(&Tree);prt(Tree, 1);return 0;
}

这篇关于树倒着打印输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938818

相关文章

自学Swift之打印输出

所有编程语言都有的函数打印输出: print()         // 不换行输出 println()      // 换行输出       print 和 println 函数可以直接打印基本类型 var num = 10 println("hello " + (String)num)   // 方式1: 其他类型同String输出的时候需要强转 printl

linux文本分析工具grep、sed和awk打印输出文本的单双奇偶行(grep也可以打印奇偶行)以及熟悉的ssh命令却有你不知道的一些用法

一、linux文本分析工具grep、sed和awk打印输出文本的单双奇偶行(grep也可以打印奇偶行)     其实sed和awk要打印输出奇偶行是很容易的事情,不过只能使用grep来输出奇偶行的话怎么实现呢?今天我就想了一下,如果真的只能使用grep来输出奇偶行的话,能不能实现?怎么实现?当然这个只当玩玩了,毕竟有awk和sed,用grep来实现的必要性不大。     如果你不看这篇文章,你

【C程序设计语言第二版】练习1-12 纯getchar()函数实现读入一个单词并打印输出

代码思路 我们可以利用单词统计的思路,标记目前的状态是在字符内部还是在字符的外部,然后做出相应的处理即可。 #include <stdio.h>#define IN 1 /* 在单词内 */#define OUT 0 /* 在单词外 */int main(void){int c, state;state = OUT;while((c = getchar()) != EOF) {if(c

[bigdata-089]go 以http get从server端读取json然后转化成json格式打印输出

1. 文档 参考各种文档,不一一列举 2. 代码 package mainimport "fmt"import "io/ioutil"import "net/http"import "encoding/json"func main() {//http getresp, err := http.Get("http://127.0.0.1:8080/v1/shorten/?lon

<vs2022><问题记录>visual studio 2022使用console打印输出时,输出窗口不显示内容

前言 本文为问题记录。 问题概述 在使用visual studio 2022编写代码时,如C#,在代码中使用console.writeline来打印某些内容,以便于观察,但发现输出窗口不显示,而代码是完全没有问题的。 解决办法 根据网上提供的办法,visual studio 2022不再提供console打印输出的功能,而是使用Trace.writeline来打印输出: Trace.Writ

Qt QProcess调用外部程序,并实时打印输出信息

Qt QProcess调用外部程序,并实时打印输出信息 引言一、源码分析1. 外部程序 - 被QProcess调用启动2. QProcessDemo - 调用外部程序,并实时打印输出信息 二、参考链接 引言 QProcess是Qt框架中的一个类,用于处理外部进程。它提供了一种直接与操作系统的进程进行交互的方式,可以启动一个外部程序,与其进行通信,获取其输出和错误信息,以及控

python 以16进制打印输出

打印整数16进制 num=10 print('%#x'%num) 打印字符串中的16进制 arr='12342535' for i in arr:   print('%#x'%ord(i))

python NP数组打印输出是省略号的问题

用ANACONDA SPYDER 3.1.4 打印几个NP的数组,出现一堆 省略号 用这句搞定。 import  n umpy as np   np.set_printoptions(threshold  =  1e6 ) #设置打印数量的阈值 来源: https://zhidao.baidu.com/question/1499864313532

Marin说PCB之如何快速打印输出整板的丝印位号图?

当小编我辛辛苦苦加班加点的把手上的板子做到投板评审状态的时候,坐在我旁边的日本同事龟田小郎君说让我把板子上的丝印也要调一下,我当时就急了,这么大的板子,将近1W多PIN 了都,光调丝印都要老半天啊,而且这个板子明天一早就要出图的啊,我还要预留出图准备检查的时间呢。我于是乎就问他了为啥他那么想要板子上的器件都要有位号这个要给我说清楚,不然我一拳就送你回国了,这也是开个玩笑嘛。毕竟我们的中日友谊需要维

Java 控制星星打印输出

控制星星的输出,带有输入方法,更灵活控制。 //记得导入输入包//import java.util.Scanner;public static void main(String[] args) {System.out.print("请输入你想打印的行数:");Scanner in = new Scanner(System.in);int a = in.nextInt();a = a+1;//