当前位置:网站首页>Design a print function to print the whole tree

Design a print function to print the whole tree

2022-06-21 17:19:00 Bright morning light

/************************************************************************* > File Name: 030. Print the whole tree .cpp > Author: Maureen > Mail: [email protected] > Created Time:  Two  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 Said the head ,^1^ It means to connect to the nearest one on the top left ,v1v Indicates that it is connected to the one closest to me at the bottom left 

    return 0;
}

The result is an anticlockwise rotation 90 Degree binary tree :
 Insert picture description here

原网站

版权声明
本文为[Bright morning light]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/172/202206211342050036.html