经过分析发现判断此树是否对成可以转换成看其左子树的中序遍历(左中右) 和 右子树的逆中序遍历(右中左) 是否相同。 


/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void process_left(TreeNode *root,vector<int> &v){
		if(!root)
			return;
		process_left(root->left,v);
		v.push_back(root->val);
		process_left(root->right,v);
	}
	void process_right(TreeNode *root, vector<int> &v){
		if(!root)
			return;
		process_right(root->right,v);
		v.push_back(root->val);
		process_right(root->left,v);
	}
	bool isSymmetric(TreeNode *root) {
        if(!root || (root->left==NULL && root->right==NULL) )
			return true;
		if(!root->left || !root->right)
			return false;
		vector<int> left;
		vector<int> right;
		process_left(root->left,left);
		process_right(root->right,right);
		return left==right;
	}
};


Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐