本文主要是介绍树倒着打印输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路
先向右遍历,同时空格也要变多,那么就先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;
}
这篇关于树倒着打印输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!