考研算法 2022.3.7

95 阅读1分钟

考研算法

题目

题目链接

题目要求

将二叉树转化为中缀表达式
中序遍历

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     string val;
 *     TreeNode *left;
 *     TreeNode *right;
 * };
 */
class Solution {
public:
    int sum=0;//为了不要最开始两边的括号
    string expressionTree(TreeNode* root) {
        sum++;
        string x;
        int flag=1;
        if (root->left==NULL && root->right==NULL)
        {
            flag=0;
        }
        if (sum==1)
        {
            flag=0;
        }
        if (root->left!=NULL)
        {
            x+=expressionTree(root->left);
        }
        x+=root->val;
        if (root->right!=NULL) x+=expressionTree(root->right);
        if (flag) 
        {
            x='('+x+')';
        }
        return x;
    }
};
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
t=0
class Solution:
    def expressionTree(self, root):
        """
        :type root: TreeNode
        :rtype: str
        """
        global t
        t=t+1
        res=''
        flag=1
        if (root.left==None and root.right==None):
            flag=0
        if t==1:
            flag=0
        if root.left:
            res=res+self.expressionTree(root.left)
        res=res+root.val
        if root.right:
            res=res+self.expressionTree(root.right)
        if flag:
            res='('+res+')'
        return res

知识点

中序遍历的顺序为:左子树->根节点->右子树