文章

105

粉丝

69

获赞

117

访问

61.3k

头像
判断二叉树是否对称 (指针建树)题解:
P1551 东北大学机试题
发布于2024年8月13日 12:31
阅读数 544

#include<bits/stdc++.h>
using namespace std;  
  
string data;

// 定义二叉树节点  
typedef struct Tree {  
    char val;  
    Tree *left, *right;  
    Tree(char x) : val(x), left(nullptr), right(nullptr) {}  
}Tree;  
  
// 层次遍历建树  
Tree* build(const string& data) {  
    if (data.empty() || data[0] == '#') return NULL;  
  
    queue<Tree*> q;  
    Tree* root = new Tree(data[0]);  
    q.push(root);  
  
    int i = 1;  
    while (!q.empty() && i < data.size()) {  
        Tree* node = q.front();  
        q.pop();  
  
        char leftChar = data[i++];  
        char rightChar = (i < data.size()) ? data[i++] : '#';  
  
        if (leftChar != '#') {  
            node->left = new Tree(leftChar);  
            q.push(node->left);  
        }  
  
        if (rightChar != '#') {  
            node->right = new Tree(rightChar);  
            q.push(node->right);  
        }  
    }  
  
    return root...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发