二叉樹的下乙個結點 對稱的二叉樹

2021-09-24 05:20:40 字數 1455 閱讀 3053

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

二叉樹為空,返回空

結點的右孩子存在,設定指標從右孩子出發,沿著左子結點出發直到找到葉子節點,這個就是下乙個節點

結點不是根結點,如果是父節點的左孩子,返回父節點;如果是父節點的右孩子,繼續向上遍歷其父節點;重複完成判斷

/**

* * @author user

* @create 2019-06-07-8:31

*/class treelinknode

}public class jzo57

if (pnode.right!=null)

return pnode;

}while (pnode.next!=null)

pnode=pnode.next;

}return null;

}public static void main(string args)

}

請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。

判斷根結點的左右子樹是否相同:

根結點為空,返回true;

左右子樹都為空,返回true;

左右子樹只有乙個為空,肯定不對稱;

繼續遍歷根結點的左孩子的左節點是否和右孩子的右節點、左孩子的右節點和右孩子的左節點是否想同,相同返回true,不相同返回false;

/**

* 劍指offer一刷:對稱的二叉樹

* * @author user

* @create 2019-06-07-8:51

*/public class jzo58

return nextroot(proot.left,proot.right);

}public boolean nextroot(treenode left,treenode right)

if (right==null)

if (left.val!=right.val)

return nextroot(left.right,right.left)&&nextroot(left.left,right.right);

}boolean issymmetrical1(treenode proot)

return nextroot1(proot.left,proot.right);

}public boolean nextroot1(treenode left,treenode right)

if (right==null||left==null)

if (left.val==right.val)

return false;

}public static void main(string args)

}

對稱的二叉樹 二叉樹的下乙個結點

1 對稱二叉樹 1.1 題目 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。1.2 原理 需要注意的是,題目中同樣的理解,必須是結構一樣,且對應節點的值也要是一樣的。遍歷的思想,對於根節點的左右子樹可以分別將其看成兩個二叉樹1和樹2,同...

二叉樹 二叉樹的下乙個結點

題目描述 給定一棵二叉樹和乙個結點,要求找到中序遍歷此樹時該結點的下乙個結點。分析 中序遍歷一棵二叉樹時,要根據乙個結點有無右子樹而分開討論。若當前結點有右子樹,則它的下乙個結點就是其右子樹的最左葉子結點 若當前結點沒有右子樹,那麼又分兩種情況 若當前結點是其父節點的左孩子結點,那麼其下乙個結點就是...

樹 二叉樹的下乙個結點

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。思路 如果乙個結點有右子樹,那麼它的下乙個結點就是它的右子樹中的左子結點。也就是說右子結點出發一直沿著指向左子結點的指標,我們就能找到它的下乙個結點。接著我...