Я хочу узнать, является ли двоичное дерево T2 поддеревом двоичного дерева T1. Я прочитал, что можно было построить строковые представления для T2 и T1, используя предварительные и обходные обходы, и если строки T2 являются подстроками строк T1, T2 является поддеревом T1.
Я немного смущен этим методом и не уверен в его правильности.
Из wiki: "Поддерево дерева T является деревом, состоящим из node в T и всех его потомков в T."
В следующем примере:
T2:
1
/ \
2 3
T1:
1
/ \
2 3
\
4
Если мы построим строки для T2 и T1:
preorder T2: "1,2,3"
preorder T1: "1,2,3,4"
inorder T2: "2,1,3"
inorder T1: "2,1,3,4"
Строки T2 являются подстроками T1, поэтому, используя описанный выше метод согласования подстроки, мы должны заключить, что T2 является поддеревом T1.
Однако T2 по определению не должен быть поддеревом T1, поскольку он не имеет всех потомков корня T1 node.
Существует связанное обсуждение здесь, которое, похоже, завершает метод правильным.
Я что-то пропустил?