考研算法
题目
题目要求
将二叉树转化为中缀表达式
中序遍历
代码
/**
* 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
知识点
中序遍历的顺序为:左子树->根节点->右子树