LeetCode 1379. Encuentre el mismo nodo en el árbol binario clonado (recorrido del árbol binario)

1. Título

Le da dos árboles binarios, el árbol original original y el árbol clonado clonado, y un nodo de destino objetivo ubicado en el árbol original original.

Entre ellos, el árbol clonado clonado es una copia del árbol original.

Busque el nodo que es el mismo que el objetivo en el árbol clonado y devuelva una referencia al nodo (en C / C ++ y otros idiomas con punteros, devuelva el puntero del nodo, otros idiomas devuelven el nodo).

注意:
你 不能 对两棵二叉树,以及 target 节点进行更改。
只能 返回对克隆树 cloned 中已有的节点的引用。
进阶:如果树中允许出现值相同的节点,你将如何解答?

Fuente:
enlace de LeetCode : https://leetcode-cn.com/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree
copyright Collar de red todo. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.

2. Resolución de problemas

  • Recorrido de árbol binario en modo cíclico, los dos árboles se pueden sincronizar
class Solution {
public:
    TreeNode* getTargetCopy(TreeNode* original, TreeNode* cloned, TreeNode* target) {
        stack<TreeNode*> stk1, stk2;
        TreeNode *tp1, *tp2;
        while(original || !stk1.empty())
        {
        	while(original)
        	{
        		stk1.push(original);
        		original = original->left;
        	}
        	while(cloned)
        	{
        		stk2.push(cloned);
        		cloned = cloned->left;
        	}
        	tp1 = stk1.top();
        	tp2 = stk2.top();
        	stk1.pop();
        	stk2.pop();
        	if(tp1 == target)
        		return tp2;
        	original = tp1->right;
        	cloned = tp2->right;
        }
        return NULL;
    }
};

872 ms 164,6 MB

Publicado 839 artículos originales · elogiado 2083 · 440,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/qq_21201267/article/details/105479474
Recomendado
Clasificación