給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
二叉樹為空,返回空
結點的右孩子存在,設定指標從右孩子出發,沿著左子結點出發直到找到葉子節點,這個就是下乙個節點
結點不是根結點,如果是父節點的左孩子,返回父節點;如果是父節點的右孩子,繼續向上遍歷其父節點;重複完成判斷
/**
* * @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,同...
二叉樹 二叉樹的下乙個結點
題目描述 給定一棵二叉樹和乙個結點,要求找到中序遍歷此樹時該結點的下乙個結點。分析 中序遍歷一棵二叉樹時,要根據乙個結點有無右子樹而分開討論。若當前結點有右子樹,則它的下乙個結點就是其右子樹的最左葉子結點 若當前結點沒有右子樹,那麼又分兩種情況 若當前結點是其父節點的左孩子結點,那麼其下乙個結點就是...
樹 二叉樹的下乙個結點
題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。思路 如果乙個結點有右子樹,那麼它的下乙個結點就是它的右子樹中的左子結點。也就是說右子結點出發一直沿著指向左子結點的指標,我們就能找到它的下乙個結點。接著我...