8 二叉樹的下乙個節點

2021-09-29 19:30:46 字數 1679 閱讀 6850

·理解關鍵:先序遍歷的意思是先遍歷左子樹,等到左子樹全部遍歷完之後才遍歷自己,然後是右子樹。

#include

using

namespace std;

struct binarytreenode

;/*********************************

* 視覺化樹結構

**********************************/

void

padding

(char ch,

int n)

void

print_node

(struct binarytreenode *root,

int level)

else

}void

print_tree

(struct binarytreenode* root)

/*********************************

* 隨機生成一棵樹

**********************************/

binarytreenode*

creatnode

(int deep,

int range, binarytreenode* parent)

return node;

}binarytreenode*

creatrandtree

(int deep,

int range)

binarytreenode* root =

newbinarytreenode()

; root-

>m_pparent =

null

; root-

>m_nvalue =

rand()

% range;

if(deep ==1)

else

return root;

}/*********************************

* 演算法

**********************************/

binarytreenode*

getnext

(binarytreenode* pnode)

binarytreenode* pnext =

null;if

(pnode-

>m_pright !=

null

) pnext = pright;

}else

if(pnode-

>m_pparent !=

null)

pnext = pparent;

// 要麼是目標節點,要麼是null

}return pnext;

}int

main()

cout <<

"inorder: "

; cout << pnode-

>m_nvalue <<

" ";

while

(pnode=

getnext

(pnode)

)system

("pause");

return0;

}

·應用場景:非遞迴方法中序遍歷樹。

8 二叉樹的下乙個節點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。分三種情況考慮。1 若該節點存在右子樹,則下一節點為右子樹最左邊的節點。2 該節點不存在右子樹,若該節點為父節點的左節點,則該父節點為該節點的下一節點。3 若該節點為...

8 二叉樹的下乙個節點

public static treenode getnext treenode node treenode temp node.right treenode nextnode 如果乙個節點有右子樹 if temp null nextnode temp 如果乙個節點沒有右子樹,且是它父節點的左子節點 ...

8 二叉樹的下乙個節點

1 題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。public class treelinknode 2 思路 以該二叉樹為例,中序遍歷為 仔細觀察,可以把中序下一結點歸為幾種型別 有右子樹,下一結點是...