当前位置:网站首页>设计一个打印整棵树的打印函数

设计一个打印整棵树的打印函数

2022-06-21 16:01:00 明朗晨光

/************************************************************************* > File Name: 030.打印整棵树.cpp > Author: Maureen > Mail: [email protected] > Created Time: 二 6/21 12:16:54 2022 ************************************************************************/

#include <iostream>
using namespace std;


class TreeNode {
    
public:
    int value;
    TreeNode *left;
    TreeNode *right;

    TreeNode(int v) : value(v) {
    }
};

string getSpace(int num) {
    
    string space = " ";
    string str = "";
    for (int i = 0; i < num; i++) {
    
        str += space;
    }
    return str;
}

void printInOrder(TreeNode *root, int height, string to, int len) {
    
    if (root == nullptr) return ;

    printInOrder(root->right, height + 1, "v", len);
    string val = to + to_string(root->value) + to;
    int lenM = val.length();
    int lenL = (len - lenM) / 2;
    int lenR = len - lenM - lenL;
    val = getSpace(lenL) + val + getSpace(lenR);
    cout << getSpace(height * len) + val << endl;
    printInOrder(root->left, height + 1, "^", len);
}

void printTree(TreeNode *root) {
    
    cout << "Binary Tree:" << endl;
    printInOrder(root, 0, "H", 17);
    cout << endl;
}

int main() {
    
    TreeNode *root = new TreeNode(1);
    root->left = new TreeNode(-222222222);
    root->right = new TreeNode(3);
    root->left->left = new TreeNode(INT_MIN);
    root->right->left = new TreeNode(55555555);
    root->right->right = new TreeNode(66);
    root->left->left->right = new TreeNode(777);
    printTree(root);

    root = new TreeNode(1);
	root->left = new TreeNode(2);
	root->right = new TreeNode(3);
	root->left->left = new TreeNode(4);
	root->right->left = new TreeNode(5);
	root->right->right = new TreeNode(6);
	root->left->left->right = new TreeNode(7);
	printTree(root);

    root = new TreeNode(1);
	root->left = new TreeNode(1);
	root->right = new TreeNode(1);
	root->left->left = new TreeNode(1);
	root->right->left = new TreeNode(1);
	root->right->right = new TreeNode(1);
	root->left->left->right = new TreeNode(1);
    printTree(root); //H1H表示头,^1^表示连接到左边上方离我最近的,v1v表示连接到左边下方离我最近的

    return 0;
}

得到的结果就是一棵逆时针旋转了 90 度的二叉树:
在这里插入图片描述

原网站

版权声明
本文为[明朗晨光]所创,转载请带上原文链接,感谢
https://maureen.blog.csdn.net/article/details/125388796